def activate_beneficiary( user: users_models.User, deposit_source: str = None, has_activated_account: Optional[bool] = True ) -> users_models.User: if not deposit_source: beneficiary_import = subscription_repository.get_beneficiary_import_for_beneficiary(user) if not beneficiary_import: raise exceptions.BeneficiaryImportMissingException() eligibility = beneficiary_import.eligibilityType deposit_source = beneficiary_import.get_detailed_source() else: eligibility = users_models.EligibilityType.AGE18 if eligibility == users_models.EligibilityType.UNDERAGE: user.add_underage_beneficiary_role() elif eligibility == users_models.EligibilityType.AGE18: user.add_beneficiary_role() else: raise users_exception.InvalidEligibilityTypeException() if "apps_flyer" in user.externalIds: apps_flyer_job.log_user_becomes_beneficiary_event_job.delay(user.id) deposit = payments_api.create_deposit(user, deposit_source=deposit_source, eligibility=eligibility) db.session.add_all((user, deposit)) db.session.commit() logger.info("Activated beneficiary and created deposit", extra={"user": user.id, "source": deposit_source}) db.session.refresh(user) update_external_user(user) _send_beneficiary_activation_email(user, has_activated_account) return user
def test_a_partner_should_never_be_a_beneficiary(self, app, db_session): # given user = User() user.add_beneficiary_role() view = PartnerUserView(model=User, session=db_session) # when view.on_model_change(Form(), model=user, is_created=False) # then assert not user.has_beneficiary_role
def on_model_change(self, form: Form, model: User, is_created: bool) -> None: model.publicName = f"{model.firstName} {model.lastName}" if is_created: model.add_beneficiary_role() # This is to prevent a circulary import dependency from pcapi.core.users.api import fulfill_beneficiary_data deposit_version = int( form.depositVersion.data) if not settings.IS_PROD else None fulfill_beneficiary_data(model, "pass-culture-admin", deposit_version) super().on_model_change(form, model, is_created)
def create_pro_user(pro_user: ProUserCreationBodyModel) -> User: new_pro_user = User(from_dict=pro_user.dict(by_alias=True)) new_pro_user.email = sanitize_email(new_pro_user.email) new_pro_user.notificationSubscriptions = asdict(NotificationSubscriptions(marketing_email=pro_user.contact_ok)) new_pro_user.remove_admin_role() new_pro_user.remove_beneficiary_role() new_pro_user.needsToFillCulturalSurvey = False new_pro_user.generate_validation_token() if pro_user.postal_code: new_pro_user.departementCode = PostalCode(pro_user.postal_code).get_departement_code() if settings.IS_INTEGRATION: new_pro_user.add_beneficiary_role() deposit = payment_api.create_deposit(new_pro_user, "integration_signup") new_pro_user.deposits = [deposit] return new_pro_user