def signup(): """Handle user signup. Create new user and add to DB. Redirect to home page. If form not valid, present form. If the there already is a user with that username: flash message and re-present form. """ if CURR_USER_KEY in session: del session[CURR_USER_KEY] signup_form = UserSignupForm() login_form = UserLoginForm() # Signup form validation if signup_form.validate_on_submit(): try: user = User.signup( username=signup_form.username.data, first_name=signup_form.first_name.data, password=signup_form.password.data, image_url=signup_form.image_url.data or User.image_url.default.arg, ) db.session.commit() except IntegrityError as e: # Flash errors and reload page flash("Username already taken", 'danger signup-form-error') return render_template('no_user/no_user_home.html', signup_form=signup_form, login_form=login_form) # If it worked -> do login and say hello do_login(user) flash(f"Hello, {user.first_name}!", "success") # Go to User Home return redirect("/home") else: #If form not valid fields = [field for field in signup_form] errors = {} #Capture errors in dict for field in fields: if field.errors: errors[field.name] = field.errors #Create error message string to display errors on redirect error_message = "<i class='far fa-frown-open error-sad-icon'></i><span class='error-sad-title'>Dang it! It didn't work...</span>" for name, error in errors.items(): error_message += f"<p><b>*</b> {name} : {error[0]}</p>" flash(f"{error_message}", 'danger signup-form-error') return redirect('/')
def show_signup(): form = UserSignupForm() if form.validate_on_submit(): new_user = User.register(username=form.username.data, password=form.password.data, email=form.email.data, first_name=form.first_name.data, last_name=form.last_name.data) try: db.session.add(new_user) db.session.commit() except IntegrityError: db.session.rollback() return render_template('signup.html', form=form)
def signup(): """ Create and secure new account""" form = UserSignupForm() if form.validate_on_submit(): try: user = User.signup(username=form.username.data, password=form.password.data, email=form.email.data) db.session.commit() except IntegrityError: flash('Username alredy taken') return render_template('users/signup.html', form=form) login(user) return redirect('/books') else: return render_template('users/signup.html', form=form)