Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
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
Ejemplo n.º 8
0
    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