diff --git a/api/src/pcapi/core/users/factories.py b/api/src/pcapi/core/users/factories.py index 770317d0d94..53be3531734 100644 --- a/api/src/pcapi/core/users/factories.py +++ b/api/src/pcapi/core/users/factories.py @@ -20,6 +20,7 @@ from pcapi.core.fraud import models as fraud_models from pcapi.core.users import utils as users_utils import pcapi.core.users.constants as users_constants +import pcapi.core.users.models as users_models from pcapi.models import db from pcapi.models.beneficiary_import import BeneficiaryImport from pcapi.models.beneficiary_import import BeneficiaryImportSources @@ -887,6 +888,32 @@ def _build( instance.clearTextPassword = settings.TEST_DEFAULT_PASSWORD return instance + @factory.post_generation + def new_pro_portal( + self, + create: bool, + extracted: typing.Any = None, + **kwargs: typing.Any, + ) -> None: + if not create: + return + + # We check whether or not a UserProNewNavState because the "created" flag is always true + # if the user exists but FactoryBoy tried to create it through nested data such as: + # offerers_factories.UserOffererFactory(offerer1, user__email="api@example.com")) + # offerers_factories.UserOffererFactory(offerer2, user__email="api@example.com")) + # The second time, the get_or_create on email will fetch the user but still set create to True + # when calling this function + if ( + not self.id + or not users_models.UserProNewNavState.query.filter( + users_models.UserProNewNavState.userId == self.id + ).one_or_none() + ): + db.session.add(self) + db.session.flush() + self.pro_new_nav_state = UserProNewNavStateFactory(user=self) + class NonAttachedProFactory(ProFactory): class Meta: diff --git a/api/src/pcapi/sandboxes/scripts/creators/data/create_data_offerers_with_pro_users.py b/api/src/pcapi/sandboxes/scripts/creators/data/create_data_offerers_with_pro_users.py index 190fb2521d7..ce9d159fb96 100644 --- a/api/src/pcapi/sandboxes/scripts/creators/data/create_data_offerers_with_pro_users.py +++ b/api/src/pcapi/sandboxes/scripts/creators/data/create_data_offerers_with_pro_users.py @@ -111,7 +111,6 @@ def create_data_offerers_with_pro_users() -> tuple[dict[str, Offerer], dict[str, postalCode=f"{departement_code}100", phoneNumber="+33100000001", ) - users_factories.UserProNewNavStateFactory(user=pro) users_by_name[user_name] = pro user_index += 1 @@ -138,7 +137,6 @@ def create_data_offerers_with_pro_users() -> tuple[dict[str, Offerer], dict[str, postalCode=f"{departement_code}100", phoneNumber="+33100000002", ) - users_factories.UserProNewNavStateFactory(user=pro) users_by_name[user_name] = pro user_index += 1 diff --git a/api/src/pcapi/sandboxes/scripts/creators/data/create_data_pro_users.py b/api/src/pcapi/sandboxes/scripts/creators/data/create_data_pro_users.py index 333e079ab01..244cf615c99 100644 --- a/api/src/pcapi/sandboxes/scripts/creators/data/create_data_pro_users.py +++ b/api/src/pcapi/sandboxes/scripts/creators/data/create_data_pro_users.py @@ -38,7 +38,6 @@ def create_data_pro_users(offerers_by_name: dict) -> dict[str, User]: lastName=f"{departement_code} {pro_count}", postalCode=f"{departement_code}100", ) - users_factories.UserProNewNavStateFactory(user=user) users_by_name[f"pro{departement_code} {pro_count} DATA"] = user user_offerer = adage_not_eligible_offerers[0] UserOffererFactory(offerer=user_offerer, user=user) diff --git a/api/src/pcapi/sandboxes/scripts/creators/e2e/create_e2e_eac_data/create_users_and_offerers.py b/api/src/pcapi/sandboxes/scripts/creators/e2e/create_e2e_eac_data/create_users_and_offerers.py index fe4aa8be6ed..681bef71f7d 100644 --- a/api/src/pcapi/sandboxes/scripts/creators/e2e/create_e2e_eac_data/create_users_and_offerers.py +++ b/api/src/pcapi/sandboxes/scripts/creators/e2e/create_e2e_eac_data/create_users_and_offerers.py @@ -1,6 +1,5 @@ from pcapi.core.offerers import factories as offerers_factories from pcapi.core.offerers import models as offerers_models -from pcapi.core.users import factories as user_factories def create_users_offerers() -> list[offerers_models.Offerer]: @@ -12,7 +11,6 @@ def create_users_offerers() -> list[offerers_models.Offerer]: offerer__name="eac_1_lieu", offerer__siren="552081317", ) - user_factories.UserProNewNavStateFactory(user__email="eac_1_lieu@example.com") offerers.append(user_offerer.offerer) user_offerer = offerers_factories.UserOffererFactory( user__email="eac_2_lieu@example.com", diff --git a/api/src/pcapi/sandboxes/scripts/creators/e2e/create_e2e_gdpr_users.py b/api/src/pcapi/sandboxes/scripts/creators/e2e/create_e2e_gdpr_users.py index 114f0ec6471..ea3590b4137 100644 --- a/api/src/pcapi/sandboxes/scripts/creators/e2e/create_e2e_gdpr_users.py +++ b/api/src/pcapi/sandboxes/scripts/creators/e2e/create_e2e_gdpr_users.py @@ -49,7 +49,6 @@ def _create_gdpr_user( data.update(kwargs) user = factory(**data) - users_factories.UserProNewNavStateFactory(user=user) history_factories.ActionHistoryFactory( authorUser=None, diff --git a/api/src/pcapi/sandboxes/scripts/creators/e2e/create_e2e_incidents.py b/api/src/pcapi/sandboxes/scripts/creators/e2e/create_e2e_incidents.py index 40cb8ddabc1..07bf07ffd46 100644 --- a/api/src/pcapi/sandboxes/scripts/creators/e2e/create_e2e_incidents.py +++ b/api/src/pcapi/sandboxes/scripts/creators/e2e/create_e2e_incidents.py @@ -320,7 +320,6 @@ def _create_one_collective_incident( def create_e2e_incidents() -> None: offerer = offerers_factories.OffererFactory(name="Structure avec beaucoup d'incidents") pro = users_factories.ProFactory(email="pctest.pro.incidents@example.com") - users_factories.UserProNewNavStateFactory(user=pro) offerers_factories.UserOffererFactory(offerer=offerer, user=pro) for i, params in enumerate(INDIVIDUAL_INCIDENT_PARAMS): diff --git a/api/src/pcapi/sandboxes/scripts/creators/e2e/create_e2e_pro_users.py b/api/src/pcapi/sandboxes/scripts/creators/e2e/create_e2e_pro_users.py index 438cd84a418..e64ec4eba10 100644 --- a/api/src/pcapi/sandboxes/scripts/creators/e2e/create_e2e_pro_users.py +++ b/api/src/pcapi/sandboxes/scripts/creators/e2e/create_e2e_pro_users.py @@ -48,11 +48,6 @@ def create_e2e_pro_users(offerers_by_name: dict) -> dict[str, User]: users_by_name["pro pro adage eligible"] = pro_adage_eligible pro_new_nav_state = users_factories.ProFactory(email="activation_new_nav@example.com") eac_new_nav_state = users_factories.ProFactory(email="eac_2_lieu_new_nav@example.com") - users_factories.UserProNewNavStateFactory(user=pro_retention) - users_factories.UserProNewNavStateFactory(user=pro_retention_structures) - users_factories.UserProNewNavStateFactory(user=pro_adage_eligible) - users_factories.UserProNewNavStateFactory(user=pro_new_nav_state) - users_factories.UserProNewNavStateFactory(user=eac_new_nav_state) repository.save(*users_by_name.values(), pro_new_nav_state, eac_new_nav_state) diff --git a/api/src/pcapi/sandboxes/scripts/creators/e2e/create_new_caledonia_offerers.py b/api/src/pcapi/sandboxes/scripts/creators/e2e/create_new_caledonia_offerers.py index e6d44bf3e16..65a438acabd 100644 --- a/api/src/pcapi/sandboxes/scripts/creators/e2e/create_new_caledonia_offerers.py +++ b/api/src/pcapi/sandboxes/scripts/creators/e2e/create_new_caledonia_offerers.py @@ -10,7 +10,6 @@ from pcapi.core.offerers import factories as offerers_factories from pcapi.core.offerers import models as offerers_models from pcapi.core.offers import factories as offers_factories -from pcapi.core.users import factories as users_factories logger = logging.getLogger(__name__) @@ -67,14 +66,13 @@ def _create_nc_active_offerer() -> None: adageId=None, offererAddress__address=address, ) - pro_user = offerers_factories.UserOffererFactory( + offerers_factories.UserOffererFactory( offerer=offerer, user__firstName="Mâ", user__lastName="Néo-Calédonien", user__email="pro1.nc@example.com", user__phoneNumber="+687263443", - ).user - users_factories.UserProNewNavStateFactory(user=pro_user) + ) bank_account = finance_factories.BankAccountFactory( label="Compte courant Banque de Nouvelle-Calédonie", @@ -152,11 +150,10 @@ def _create_nc_minimal_offerer() -> None: adageId=None, offererAddress__address=address, ) - pro_user = offerers_factories.UserOffererFactory( + offerers_factories.UserOffererFactory( offerer=offerer, user__firstName="Méréï", user__lastName="Néo-Calédonien", user__email="pro2.nc@example.com", user__phoneNumber="+687442504", - ).user - users_factories.UserProNewNavStateFactory(user=pro_user) + ) diff --git a/api/src/pcapi/sandboxes/scripts/creators/e2e/create_offerer_providers_for_apis.py b/api/src/pcapi/sandboxes/scripts/creators/e2e/create_offerer_providers_for_apis.py index 72bff33d34d..c1610fdc2b4 100644 --- a/api/src/pcapi/sandboxes/scripts/creators/e2e/create_offerer_providers_for_apis.py +++ b/api/src/pcapi/sandboxes/scripts/creators/e2e/create_offerer_providers_for_apis.py @@ -71,7 +71,6 @@ def create_offerer_provider_with_offers(name: str, user_email: str) -> None: lastName="Api", phoneNumber="+33100000000", ) - users_factories.UserProNewNavStateFactory(user=user) offerers_factories.UserOffererFactory(offerer=offerer, user=user) first_venue = offerers_factories.VenueFactory(name="Zénith de Lisieux", managingOfferer=offerer) second_venue = offerers_factories.VenueFactory(name="Olympia de Besançon", managingOfferer=offerer) diff --git a/api/src/pcapi/sandboxes/scripts/creators/industrial/create_industrial_eac_data/create_users_and_offerers.py b/api/src/pcapi/sandboxes/scripts/creators/industrial/create_industrial_eac_data/create_users_and_offerers.py index ec862f9a8eb..a973a7f668b 100644 --- a/api/src/pcapi/sandboxes/scripts/creators/industrial/create_industrial_eac_data/create_users_and_offerers.py +++ b/api/src/pcapi/sandboxes/scripts/creators/industrial/create_industrial_eac_data/create_users_and_offerers.py @@ -1,6 +1,5 @@ from pcapi.core.offerers import factories as offerers_factories from pcapi.core.offerers import models as offerers_models -from pcapi.core.users import factories as user_factories def create_users_offerers() -> list[offerers_models.Offerer]: @@ -12,7 +11,6 @@ def create_users_offerers() -> list[offerers_models.Offerer]: offerer__name="eac_1_lieu", offerer__siren="552081317", ) - user_factories.UserProNewNavStateFactory(user__email="eac_1_lieu@example.com") offerers.append(user_offerer.offerer) user_offerer = offerers_factories.UserOffererFactory( user__email="eac_2_lieu@example.com", diff --git a/api/src/pcapi/sandboxes/scripts/creators/industrial/create_industrial_gdpr_users.py b/api/src/pcapi/sandboxes/scripts/creators/industrial/create_industrial_gdpr_users.py index 2691a62aa84..78d1169f0dd 100644 --- a/api/src/pcapi/sandboxes/scripts/creators/industrial/create_industrial_gdpr_users.py +++ b/api/src/pcapi/sandboxes/scripts/creators/industrial/create_industrial_gdpr_users.py @@ -49,7 +49,6 @@ def _create_gdpr_user( data.update(kwargs) user = factory(**data) - users_factories.UserProNewNavStateFactory(user=user) history_factories.ActionHistoryFactory( authorUser=None, diff --git a/api/src/pcapi/sandboxes/scripts/creators/industrial/create_industrial_incidents.py b/api/src/pcapi/sandboxes/scripts/creators/industrial/create_industrial_incidents.py index 72f14397b4a..d046d295333 100644 --- a/api/src/pcapi/sandboxes/scripts/creators/industrial/create_industrial_incidents.py +++ b/api/src/pcapi/sandboxes/scripts/creators/industrial/create_industrial_incidents.py @@ -320,7 +320,6 @@ def _create_one_collective_incident( def create_industrial_incidents() -> None: offerer = offerers_factories.OffererFactory(name="Structure avec beaucoup d'incidents") pro = users_factories.ProFactory(email="pctest.pro.incidents@example.com") - users_factories.UserProNewNavStateFactory(user=pro) offerers_factories.UserOffererFactory(offerer=offerer, user=pro) for i, params in enumerate(INDIVIDUAL_INCIDENT_PARAMS): diff --git a/api/src/pcapi/sandboxes/scripts/creators/industrial/create_industrial_pro_users.py b/api/src/pcapi/sandboxes/scripts/creators/industrial/create_industrial_pro_users.py index 15bf1bcffc1..c504ed8d7bf 100644 --- a/api/src/pcapi/sandboxes/scripts/creators/industrial/create_industrial_pro_users.py +++ b/api/src/pcapi/sandboxes/scripts/creators/industrial/create_industrial_pro_users.py @@ -48,11 +48,6 @@ def create_industrial_pro_users(offerers_by_name: dict) -> dict[str, User]: users_by_name["pro pro adage eligible"] = pro_adage_eligible pro_new_nav_state = users_factories.ProFactory(email="activation_new_nav@example.com") eac_new_nav_state = users_factories.ProFactory(email="eac_2_lieu_new_nav@example.com") - users_factories.UserProNewNavStateFactory(user=pro_retention) - users_factories.UserProNewNavStateFactory(user=pro_retention_structures) - users_factories.UserProNewNavStateFactory(user=pro_adage_eligible) - users_factories.UserProNewNavStateFactory(user=pro_new_nav_state) - users_factories.UserProNewNavStateFactory(user=eac_new_nav_state) repository.save(*users_by_name.values(), pro_new_nav_state, eac_new_nav_state) diff --git a/api/src/pcapi/sandboxes/scripts/creators/industrial/create_new_caledonia_offerers.py b/api/src/pcapi/sandboxes/scripts/creators/industrial/create_new_caledonia_offerers.py index e6d44bf3e16..65a438acabd 100644 --- a/api/src/pcapi/sandboxes/scripts/creators/industrial/create_new_caledonia_offerers.py +++ b/api/src/pcapi/sandboxes/scripts/creators/industrial/create_new_caledonia_offerers.py @@ -10,7 +10,6 @@ from pcapi.core.offerers import factories as offerers_factories from pcapi.core.offerers import models as offerers_models from pcapi.core.offers import factories as offers_factories -from pcapi.core.users import factories as users_factories logger = logging.getLogger(__name__) @@ -67,14 +66,13 @@ def _create_nc_active_offerer() -> None: adageId=None, offererAddress__address=address, ) - pro_user = offerers_factories.UserOffererFactory( + offerers_factories.UserOffererFactory( offerer=offerer, user__firstName="Mâ", user__lastName="Néo-Calédonien", user__email="pro1.nc@example.com", user__phoneNumber="+687263443", - ).user - users_factories.UserProNewNavStateFactory(user=pro_user) + ) bank_account = finance_factories.BankAccountFactory( label="Compte courant Banque de Nouvelle-Calédonie", @@ -152,11 +150,10 @@ def _create_nc_minimal_offerer() -> None: adageId=None, offererAddress__address=address, ) - pro_user = offerers_factories.UserOffererFactory( + offerers_factories.UserOffererFactory( offerer=offerer, user__firstName="Méréï", user__lastName="Néo-Calédonien", user__email="pro2.nc@example.com", user__phoneNumber="+687442504", - ).user - users_factories.UserProNewNavStateFactory(user=pro_user) + ) diff --git a/api/src/pcapi/sandboxes/scripts/creators/industrial/create_offerer_providers_for_apis.py b/api/src/pcapi/sandboxes/scripts/creators/industrial/create_offerer_providers_for_apis.py index 72bff33d34d..c1610fdc2b4 100644 --- a/api/src/pcapi/sandboxes/scripts/creators/industrial/create_offerer_providers_for_apis.py +++ b/api/src/pcapi/sandboxes/scripts/creators/industrial/create_offerer_providers_for_apis.py @@ -71,7 +71,6 @@ def create_offerer_provider_with_offers(name: str, user_email: str) -> None: lastName="Api", phoneNumber="+33100000000", ) - users_factories.UserProNewNavStateFactory(user=user) offerers_factories.UserOffererFactory(offerer=offerer, user=user) first_venue = offerers_factories.VenueFactory(name="Zénith de Lisieux", managingOfferer=offerer) second_venue = offerers_factories.VenueFactory(name="Olympia de Besançon", managingOfferer=offerer) diff --git a/api/src/pcapi/sandboxes/scripts/getters/pro_01_create_pro_user.py b/api/src/pcapi/sandboxes/scripts/getters/pro_01_create_pro_user.py index 403c7e970da..26d1dd47785 100644 --- a/api/src/pcapi/sandboxes/scripts/getters/pro_01_create_pro_user.py +++ b/api/src/pcapi/sandboxes/scripts/getters/pro_01_create_pro_user.py @@ -6,7 +6,6 @@ def create_pro_user_with_venue_bank_account_and_userofferer() -> dict: pro_user = users_factories.ProFactory() - users_factories.UserProNewNavStateFactory(user=pro_user) venue = offerers_factories.VenueFactory() finance_factories.BankAccountFactory(offerer=venue.managingOfferer)