def create_pro_user(pro_user: ProUserCreationBodyModel) -> User: objects_to_save = [] new_pro_user = User(from_dict=pro_user.dict(by_alias=True)) new_pro_user.hasAllowedRecommendations = pro_user.contact_ok existing_offerer = Offerer.query.filter_by(siren=pro_user.siren).first() if existing_offerer: user_offerer = _generate_user_offerer_when_existing_offerer(new_pro_user, existing_offerer) offerer = existing_offerer else: offerer = _generate_offerer(pro_user.dict(by_alias=True)) user_offerer = offerer.grant_access(new_pro_user) digital_venue = create_digital_venue(offerer) objects_to_save.extend([digital_venue, offerer]) objects_to_save.append(user_offerer) new_pro_user.isBeneficiary = False new_pro_user.isAdmin = False new_pro_user.needsToFillCulturalSurvey = False new_pro_user = _set_offerer_departement_code(new_pro_user, offerer) new_pro_user.generate_validation_token() objects_to_save.append(new_pro_user) repository.save(*objects_to_save) try: user_emails.send_user_validation_email(new_pro_user) except MailServiceException: logger.exception("Could not send validation email when creating pro user=%s", new_pro_user.id) return new_pro_user
def update_user_profile( user: User, body: serializers.UserProfileUpdateRequest ) -> serializers.UserProfileResponse: if body.hasAllowedRecommendations is not None: user.hasAllowedRecommendations = body.hasAllowedRecommendations repository.save(user) return serializers.UserProfileResponse.from_orm(user)
def signup_webapp(): objects_to_save = [] check_valid_signup_webapp(request) new_user = User(from_dict=request.json) if request.json.get("contact_ok"): new_user.hasAllowedRecommendations = True if settings.IS_INTEGRATION: new_user.departementCode = "00" objects_to_save.append(payments_api.create_deposit(new_user, "test")) else: authorized_emails, departement_codes = get_authorized_emails_and_dept_codes() departement_code = _get_departement_code_when_authorized_or_error(authorized_emails, departement_codes) new_user.departementCode = departement_code new_user.isBeneficiary = False new_user.isAdmin = False new_user.isEmailValidated = True objects_to_save.append(new_user) repository.save(*objects_to_save) return jsonify(as_dict(new_user, includes=BENEFICIARY_INCLUDES)), 201