def execute(self, application_id: int) -> None: beneficiary_pre_subscription = get_application_by_id(application_id) user = find_user_by_email(beneficiary_pre_subscription.email) try: validate(beneficiary_pre_subscription, preexisting_account=user) except CantRegisterBeneficiary as cant_register_beneficiary_exception: self.beneficiary_repository.reject( beneficiary_pre_subscription, detail=str(cant_register_beneficiary_exception)) send_rejection_email_to_beneficiary_pre_subscription( beneficiary_pre_subscription=beneficiary_pre_subscription, beneficiary_is_eligible=isinstance( cant_register_beneficiary_exception, BeneficiaryIsADuplicate), ) else: beneficiary = self.beneficiary_repository.save( beneficiary_pre_subscription, user=user) if user is None: send_activation_email(user=beneficiary) else: send_accepted_as_beneficiary_email(user=beneficiary)
def execute(self, application_id: int) -> None: beneficiary_pre_subscription = get_application_by_id(application_id) user = find_user_by_email(beneficiary_pre_subscription.email) try: validate(beneficiary_pre_subscription, preexisting_account=user) except CantRegisterBeneficiary as cant_register_beneficiary_exception: self.beneficiary_repository.reject( beneficiary_pre_subscription, detail=str(cant_register_beneficiary_exception)) send_rejection_email_to_beneficiary_pre_subscription( beneficiary_pre_subscription=beneficiary_pre_subscription, beneficiary_is_eligible=isinstance( cant_register_beneficiary_exception, BeneficiaryIsADuplicate), send_email=send_raw_email, ) else: if not user: beneficiary = self.beneficiary_repository.save( beneficiary_pre_subscription) else: beneficiary = users_api.activate_beneficiary( user, beneficiary_pre_subscription.deposit_source) users_api.attach_beneficiary_import_details( user, beneficiary_pre_subscription) send_activation_email(user=beneficiary, send_email=send_raw_email)
def _send_beneficiary_activation_email(user: users_models.User, has_activated_account: bool): if not has_activated_account: old_user_emails.send_activation_email( user=user, reset_password_token_life_time=users_constants.RESET_PASSWORD_TOKEN_LIFE_TIME_EXTENDED ) else: accepted_as_beneficiary_email.send_accepted_as_beneficiary_email(user=user)
def test_send_activation_email(self): # given beneficiary = users_factories.BeneficiaryGrant18Factory.build() # when send_activation_email(beneficiary) # then assert len(mails_testing.outbox) == 1 assert mails_testing.outbox[0].sent_data["Mj-TemplateID"] == 994771
def test_send_activation_email_for_native(self): # given beneficiary = users_factories.UserFactory.build() token = users_factories.EmailValidationToken.build(user=beneficiary) # when send_activation_email(beneficiary, native_version=True, token=token) # then native_app_link = mails_testing.outbox[0].sent_data["Vars"][ "nativeAppLink"] assert token.value in native_app_link
def test_send_activation_email(self, mocked_get_activation_email_data): # given beneficiary = users_factories.UserFactory.build() mocked_get_activation_email_data.return_value = {"Html-part": ""} # when send_activation_email(beneficiary) # then mocked_get_activation_email_data.assert_called_once_with( user=beneficiary) assert mails_testing.outbox[0].sent_data["Html-part"] == ""
def test_send_activation_email(self, mocked_get_activation_email_data): # given beneficiary = users_factories.UserFactory.build() mocked_send_email = Mock() mocked_get_activation_email_data.return_value = {"Html-part": ""} # when send_activation_email(beneficiary, mocked_send_email) # then mocked_get_activation_email_data.assert_called_once_with( user=beneficiary) mocked_send_email.assert_called_once_with(data={"Html-part": ""})
def test_send_activation_email_for_native(self): # given beneficiary = users_factories.UserFactory.build() token = users_factories.EmailValidationToken.build(user=beneficiary) mocked_send_email = Mock() # when send_activation_email(beneficiary, mocked_send_email, native_version=True, token=token) # then mocked_send_email.assert_called() native_app_link = mocked_send_email.call_args_list[0][1]["data"][ "Vars"]["native_app_link"] assert token.value in native_app_link
def _process_creation( error_messages: List[str], information: Dict, new_beneficiaries: List[User], procedure_id: int, user: Optional[User] = None, ) -> None: new_beneficiary = create_beneficiary_from_application(information, user=user) try: repository.save(new_beneficiary) except ApiErrors as api_errors: logger.warning( "[BATCH][REMOTE IMPORT BENEFICIARIES] Could not save application %s, because of error: %s - Procedure %s", information["application_id"], api_errors, procedure_id, ) error_messages.append(str(api_errors)) else: logger.info( "[BATCH][REMOTE IMPORT BENEFICIARIES] Successfully created user for application %s - Procedure %s", information["application_id"], procedure_id, ) save_beneficiary_import_with_status( ImportStatus.CREATED, information["application_id"], source=BeneficiaryImportSources.demarches_simplifiees, source_id=procedure_id, user=new_beneficiary, ) new_beneficiaries.append(new_beneficiary) try: if user is None: send_activation_email(new_beneficiary) else: send_accepted_as_beneficiary_email(new_beneficiary) except MailServiceException as mail_service_exception: logger.exception( "Email send_activation_email failure for application %s - Procedure %s : %s", information["application_id"], procedure_id, mail_service_exception, )
def after_model_change(self, form: Form, model: User, is_created: bool) -> None: update_external_user(model) if is_created and not send_activation_email(model): token = create_reset_password_token(model) flash( f"L'envoi d'email a échoué. Le mot de passe peut être réinitialisé depuis le lien suivant : {build_pc_webapp_reset_password_link(token.value)}", "error", ) super().after_model_change(form, model, is_created)
def after_model_change(self, form: Form, model: User, is_created: bool) -> None: if is_created and not send_activation_email(model, send_raw_email): flash("L'envoi d'email a échoué", "error") super().after_model_change(form, model, is_created)
def request_email_confirmation(user: User) -> None: token = create_email_validation_token(user) user_emails.send_activation_email(user, mailing_utils.send_raw_email, native_version=True, token=token)