def add_user(email): """ Creates user, then redirects to the get_session endpoint. Returns a session """ password = request.form.get("password") username = request.form.get("username") invite_code = request.form.get("invite_code") cohort_name = '' if password is None or len(password) < 4: return make_error(400, "Password should be at least 4 characters long") if not (_valid_invite_code(invite_code)): return make_error( 400, "Invitation code is not recognized. Please contact us.") try: cohort = Cohort.query.filter_by(inv_code=invite_code).first() if cohort: # if the invite code is from a cohort, then there has to be capacity if not cohort.cohort_still_has_capacity(): return make_error( 400, "No more places in this class. Please contact us.") cohort_name = cohort.name new_user = User(email, username, password, invitation_code=invite_code, cohort=cohort) db_session.add(new_user) if cohort: if cohort.is_cohort_of_teachers: teacher = Teacher(new_user) db_session.add(teacher) db_session.commit() send_new_user_account_email(username, invite_code, cohort_name) except sqlalchemy.exc.IntegrityError: return make_error(401, "There is already an account for this email.") except ValueError: return make_error(400, "Invalid value") return get_session(email)
def create_account(db_session, username, password, invite_code, email, learned_language=None, native_language=None): cohort_name = "" if password is None or len(password) < 4: raise Exception("Password should be at least 4 characters long") if not valid_invite_code(invite_code): raise Exception("Invitation code is not recognized. Please contact us.") cohort = Cohort.query.filter_by(inv_code=invite_code).first() if cohort: if cohort.cohort_still_has_capacity(): cohort_name = cohort.name else: raise Exception("No more places in this class. Please contact us ([email protected]).") try: new_user = User(email, username, password, invitation_code=invite_code, cohort=cohort, learned_language=learned_language, native_language=native_language) db_session.add(new_user) if cohort: if cohort.is_cohort_of_teachers: teacher = Teacher(new_user) db_session.add(teacher) db_session.commit() send_new_user_account_email(username, invite_code, cohort_name) return new_user except sqlalchemy.exc.IntegrityError: raise Exception("There is already an account for this email.") except Exception as e: raise Exception("Could not create the account")
def create_account( db_session, username, password, invite_code, email, learned_language_code, native_language_code, learned_cefr_level, ): cohort_name = "" if password is None or len(password) < 4: raise Exception("Password should be at least 4 characters long") if not valid_invite_code(invite_code): raise Exception( "Invitation code is not recognized. Please contact us.") cohort = Cohort.query.filter_by(inv_code=invite_code).first() if cohort: if cohort.cohort_still_has_capacity(): cohort_name = cohort.name else: raise Exception( "No more places in this class. Please contact us ([email protected])." ) try: learned_language = Language.find_or_create(learned_language_code) native_language = Language.find_or_create(native_language_code) new_user = User( email, username, password, invitation_code=invite_code, cohort=cohort, learned_language=learned_language, native_language=native_language, ) db_session.add(new_user) learned_language = UserLanguage.find_or_create(db_session, new_user, learned_language) learned_language.cefr_level = int(learned_cefr_level) # TODO: although these are required... they should simply # be functions of CEFR level so at some further point should # removed learned_language.declared_level_min = 0 learned_language.declared_level_max = 11 db_session.add(learned_language) if cohort: if cohort.is_cohort_of_teachers: teacher = Teacher(new_user) db_session.add(teacher) db_session.commit() send_new_user_account_email(username, invite_code, cohort_name) return new_user except sqlalchemy.exc.IntegrityError: raise Exception("There is already an account for this email.") except Exception as e: print(e) raise Exception("Could not create the account")