Пример #1
0
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('/')
Пример #2
0
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)
Пример #3
0
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)