def signup_pro(): objects_to_save = [] app_origin_url = request.headers.get("origin") check_valid_signup_pro(request) new_user = User(from_dict=request.json) existing_offerer = Offerer.query.filter_by(siren=request.json["siren"]).first() if existing_offerer: user_offerer = _generate_user_offerer_when_existing_offerer(new_user, existing_offerer) offerer = existing_offerer else: offerer = _generate_offerer(request.json) user_offerer = offerer.give_rights(new_user, RightsType.editor) digital_venue = create_digital_venue(offerer) objects_to_save.extend([digital_venue, offerer]) objects_to_save.append(user_offerer) new_user.isBeneficiary = False new_user.isAdmin = False new_user.needsToFillCulturalSurvey = False new_user = _set_offerer_departement_code(new_user, offerer) new_user.generate_validation_token() objects_to_save.append(new_user) repository.save(*objects_to_save) try: send_user_validation_email(new_user, send_raw_email, app_origin_url, is_webapp=False) subscribe_newsletter(new_user) except MailServiceException: logger.exception("Mail service failure") return jsonify(as_dict(new_user, includes=USER_INCLUDES)), 201
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 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