def update_user_information_from_external_source( user: User, data: Union[fraud_models.DMSContent, fraud_models.JouveContent, fraud_models.EduconnectContent], commit=False, ) -> User: if isinstance(data, fraud_models.DMSContent): # FIXME: the following function does not override user.dateOfBirth, we should do it user = create_beneficiary_from_application(data, user) elif isinstance(data, fraud_models.JouveContent): if data.activity: user.activity = data.activity if data.address: user.address = data.address if data.city: user.city = data.city if data.gender: user.civility = "Mme" if data.gender == "F" else "M." if data.birthDateTxt: user.dateOfBirth = data.birthDateTxt if data.firstName: user.firstName = data.firstName if data.lastName: user.lastName = data.lastName if data.postalCode and not user.postalCode: user.postalCode = data.postalCode user.departementCode = PostalCode(data.postalCode).get_departement_code() if data.firstName and data.lastName: user.publicName = f"{user.firstName} {user.lastName}" if data.bodyPieceNumber: items = ( fraud_api.validate_id_piece_number_format_fraud_item(data.bodyPieceNumber), fraud_api._duplicate_id_piece_number_fraud_item(data.bodyPieceNumber), ) if all((item.status == fraud_models.FraudStatus.OK) for item in items): user.idPieceNumber = data.bodyPieceNumber if not FeatureToggle.ENABLE_PHONE_VALIDATION.is_active(): if not user.phoneNumber and data.phoneNumber: user.phoneNumber = data.phoneNumber elif isinstance(data, fraud_models.EduconnectContent): user.firstName = data.first_name user.lastName = data.last_name user.dateOfBirth = datetime.combine(data.birth_date, time(0, 0)) user.ineHash = data.ine_hash # update user fields to be correctly initialized user.hasSeenTutorials = False user.remove_admin_role() db.session.add(user) db.session.flush() if commit: db.session.commit() return user
def create_beneficiary_from_application(application_detail: dict, user: Optional[User] = None) -> User: if not user: beneficiary = User() beneficiary.password = random_password() beneficiary.email = application_detail["email"] beneficiary.dateOfBirth = application_detail["birth_date"] else: beneficiary = user beneficiary.lastName = application_detail["last_name"] beneficiary.firstName = application_detail["first_name"] beneficiary.publicName = "%s %s" % (application_detail["first_name"], application_detail["last_name"]) beneficiary.phoneNumber = application_detail["phone"] beneficiary.departementCode = application_detail["department"] beneficiary.postalCode = application_detail["postal_code"] beneficiary.civility = application_detail["civility"] beneficiary.activity = application_detail["activity"] beneficiary.isAdmin = False beneficiary.hasSeenTutorials = False generate_reset_token(beneficiary, validity_duration_hours=THIRTY_DAYS_IN_HOURS) beneficiary.isBeneficiary = True application_id = application_detail["application_id"] deposit = payments_api.create_deposit( beneficiary, f"démarches simplifiées dossier [{application_id}]") beneficiary.deposits = [deposit] return beneficiary
def to_model(beneficiary_pre_subscription: BeneficiaryPreSubscription) -> User: beneficiary = User() beneficiary.activity = beneficiary_pre_subscription.activity beneficiary.address = beneficiary_pre_subscription.address beneficiary.city = beneficiary_pre_subscription.city beneficiary.civility = beneficiary_pre_subscription.civility beneficiary.dateOfBirth = beneficiary_pre_subscription.date_of_birth beneficiary.departementCode = beneficiary_pre_subscription.department_code beneficiary.email = beneficiary_pre_subscription.email beneficiary.firstName = beneficiary_pre_subscription.first_name beneficiary.hasSeenTutorials = False beneficiary.isAdmin = False beneficiary.lastName = beneficiary_pre_subscription.last_name beneficiary.password = random_password() beneficiary.phoneNumber = beneficiary_pre_subscription.phone_number beneficiary.postalCode = beneficiary_pre_subscription.postal_code beneficiary.publicName = beneficiary_pre_subscription.public_name beneficiary.isBeneficiary = True generate_reset_token(beneficiary, validity_duration_hours=THIRTY_DAYS_IN_HOURS) deposit = payments_api.create_deposit( beneficiary, beneficiary_pre_subscription.deposit_source) beneficiary.deposits = [deposit] users_api.attach_beneficiary_import_details(beneficiary, beneficiary_pre_subscription) return beneficiary
def create_beneficiary_from_application( application_detail: fraud_models.DMSContent, user: Optional[User] = None) -> User: if not user: beneficiary = User() beneficiary.password = random_hashed_password() beneficiary.email = sanitize_email(application_detail.email) beneficiary.dateOfBirth = application_detail.birth_date else: beneficiary = user beneficiary.lastName = application_detail.last_name beneficiary.firstName = application_detail.first_name beneficiary.publicName = "%s %s" % (application_detail.first_name, application_detail.last_name) beneficiary.departementCode = application_detail.department beneficiary.postalCode = application_detail.postal_code beneficiary.address = application_detail.address beneficiary.civility = application_detail.civility beneficiary.activity = application_detail.activity beneficiary.remove_admin_role() beneficiary.hasSeenTutorials = False beneficiary.idPieceNumber = application_detail.id_piece_number if not beneficiary.phoneNumber: beneficiary.phoneNumber = application_detail.phone return beneficiary
def create_user( activity: str = None, civility: str = None, cultural_survey_id: str = None, cultural_survey_filled_date: datetime = None, date_created: datetime = datetime.utcnow(), date_of_birth: datetime = None, departement_code: str = "93", email: str = "*****@*****.**", first_name: str = None, has_seen_tutorials: bool = None, idx: int = None, is_admin: bool = False, is_beneficiary: bool = True, is_email_validated: bool = True, last_connection_date: datetime = None, last_name: str = None, needs_to_fill_cultural_survey: bool = False, password: str = None, phone_number: str = None, postal_code: str = None, public_name: str = "John Doe", reset_password_token: str = None, reset_password_token_validity_limit: datetime = None, validation_token: str = None, ) -> User: user = User() user.activity = activity user.civility = civility user.culturalSurveyId = cultural_survey_id user.culturalSurveyFilledDate = cultural_survey_filled_date user.dateCreated = date_created user.dateOfBirth = date_of_birth user.departementCode = departement_code user.email = email user.firstName = first_name user.hasSeenTutorials = has_seen_tutorials user.id = idx user.isAdmin = is_admin user.isBeneficiary = is_beneficiary user.isEmailValidated = is_email_validated user.lastConnectionDate = last_connection_date user.lastName = last_name user.needsToFillCulturalSurvey = needs_to_fill_cultural_survey user.phoneNumber = phone_number user.publicName = public_name user.postalCode = postal_code user.validationToken = validation_token if password: user.setPassword(password) else: user.setPassword(PLAIN_DEFAULT_TESTING_PASSWORD) user.resetPasswordToken = reset_password_token user.resetPasswordTokenValidityLimit = reset_password_token_validity_limit return user
def fill_user_from(csv_row: List[str], user: User) -> User: user.lastName = csv_row[USER_LAST_NAME_COLUMN_INDEX] user.firstName = csv_row[USER_FIRST_NAME_COLUMN_INDEX].split(" ")[0] user.publicName = "%s %s" % (user.firstName, user.lastName) user.email = csv_row[USER_EMAIL_COLUMN_INDEX] user.departementCode = csv_row[USER_DEPARTMENT_CODE_COLUMN_INDEX] user.isBeneficiary = False user.password = random_password() generate_reset_token(user, validity_duration_hours=THIRTY_DAYS_IN_HOURS) return user
def fill_user_from(csv_row: list[str], user: User) -> User: user.lastName = csv_row[USER_LAST_NAME_COLUMN_INDEX] user.firstName = csv_row[USER_FIRST_NAME_COLUMN_INDEX].split(" ")[0] user.publicName = "%s %s" % (user.firstName, user.lastName) user.email = sanitize_email(csv_row[USER_EMAIL_COLUMN_INDEX]) user.departementCode = csv_row[USER_DEPARTMENT_CODE_COLUMN_INDEX] user.remove_beneficiary_role() user.add_pro_role() fulfill_account_password(user) return user
def test_should_create_the_public_name(self, app, db_session): # Given user = User() user.firstName = "Ken" user.lastName = "Thompson" user.publicName = None view = ProUserView(model=User, session=db_session) # When view.on_model_change(Form(), model=user, is_created=False) # Then assert user.publicName == "Ken Thompson"
def to_model(beneficiary_pre_subscription: BeneficiaryPreSubscription, user: Optional[User] = None) -> User: if user and beneficiary_pre_subscription.postal_code.strip() == "": dateOfBirth = beneficiary_pre_subscription.date_of_birth or user.dateOfBirth civility = beneficiary_pre_subscription.civility firstName = beneficiary_pre_subscription.first_name lastName = beneficiary_pre_subscription.last_name publicName = beneficiary_pre_subscription.public_name idPieceNumber = beneficiary_pre_subscription.id_piece_number User.query.filter(User.id == user.id).update({ "civility": civility, "dateOfBirth": dateOfBirth, "firstName": firstName, "idPieceNumber": idPieceNumber, "lastName": lastName, "publicName": publicName, }) return user if not user: beneficiary = User() beneficiary.email = sanitize_email(beneficiary_pre_subscription.email) fulfill_account_password(beneficiary) else: beneficiary = user beneficiary.dateOfBirth = beneficiary_pre_subscription.date_of_birth or beneficiary.dateOfBirth beneficiary.activity = beneficiary_pre_subscription.activity beneficiary.address = beneficiary_pre_subscription.address beneficiary.city = beneficiary_pre_subscription.city beneficiary.civility = beneficiary_pre_subscription.civility beneficiary.departementCode = beneficiary_pre_subscription.department_code beneficiary.firstName = beneficiary_pre_subscription.first_name beneficiary.hasSeenTutorials = False beneficiary.remove_admin_role() beneficiary.lastName = beneficiary_pre_subscription.last_name beneficiary.postalCode = beneficiary_pre_subscription.postal_code beneficiary.publicName = beneficiary_pre_subscription.public_name if FeatureToggle.ENABLE_IDCHECK_FRAUD_CONTROLS.is_active(): beneficiary.idPieceNumber = beneficiary_pre_subscription.id_piece_number beneficiary.hasCompletedIdCheck = True if not beneficiary.phoneNumber: beneficiary.phoneNumber = beneficiary_pre_subscription.phone_number return beneficiary