예제 #1
0
def signup():
    """signup route"""
    new_user_form = NewUserForm()

    if new_user_form.validate_on_submit():
        existing_user = User.query.filter_by(
            username=new_user_form.username.data).first()
        # checks that username has not been taken
        if existing_user is None:
            # create user
            user = User.signup(
                username=new_user_form.username.data,
                email=new_user_form.email.data,
                password=new_user_form.password.data,
                country=new_user_form.country.data,
                state=new_user_form.state.data
            )

            db.session.commit()
            login_user(user)

            flash('User Created', 'success')

            return redirect(url_for('portfolio'))

    flash('Username is already taken', 'warning')
    return redirect(url_for('homepage'))
예제 #2
0
def user_signup():
    if current_user.get_id() != None:
        flash('You are already logged in!', 'danger')
        return redirect(f'/my-lists/{current_user.id}')
    form = NewUserForm()
    if form.validate_on_submit():
        if pf.is_profane(form.username.data) == True:
            flash('Please avoid using profanity!', 'danger')
        else:
            try:
                user = User.signup(
                    username=form.username.data,
                    password=form.password.data,
                    email=form.email.data,
                    avatar_url=form.avatar_url.data
                    or User.avatar_url.default.arg,
                )
                db.session.commit()
                login_user(user)
                send_email(
                    'Welcome to Aniroku', user.email,
                    'Create new lists and share with your friends, enjoy!')
                return redirect(f"/my-lists/{user.id}")
            except IntegrityError:
                db.session.rollback()
                invalid_signup(form.username.data, form.email.data)
    return render_template('signup.html', form=form)
예제 #3
0
파일: views.py 프로젝트: Tibodef/PythonBlog
    def post(self):        
        if request.method == 'POST':
            form = NewUserForm()
            if form.validate_on_submit():
                try:
                    user = User.create()
                    # Set Permissions
                    if current_user.is_admin():
                        user.role = int(form.role.data)

                    del form.role
                    del form.timezone
                    del form.lang
                    form.populate_obj(user)
                    user.set_password(form.password.data)
                    user.save()

                    flash(gettext('User was succesfully saved'))
                    return redirect(url_for('UsersView:get',id=user.id))                     
                except:
                    flash(gettext('Error while creating the user'), 'error')
                    raise                    
            else:
                flash(gettext('Invalid submission, please check the messages below'), 'error')
        else:
            form = NewUserForm()

        return render_template('admin/users/add.html', 
            title = gettext('Create new user'),
            form = form,
            user = [])
예제 #4
0
def register_user():
    """Show a form that when submitted will register/create a user
        if user already logged in, redirects to user profile """

    if "user_id" in session:
        username = session["user_id"]
        return redirect(f"/users/{username}")
  

    form = NewUserForm()

    if form.validate_on_submit():
        user = {
            "username":form.username.data,
            "password":form.password.data,
            "email":form.email.data,
            "first_name":form.first_name.data,
            "last_name":form.last_name.data,
        }

        new_user = User.register(**user)
        
        db.session.add(new_user)
        db.session.commit()
        session["user_id"] = new_user.username

        
        return redirect(f'/users/{new_user.username}')
        
    else:
        return render_template("user_register_form.html",
            form=form)
예제 #5
0
def add_user():

    user_id = session.get("user_id")

    if user_id:
        user = User.query.get(user_id)
        return redirect(f"/users/{user.username}")

    form = NewUserForm()

    if form.validate_on_submit():
        username = form.username.data
        password = form.password.data
        email = form.email.data
        first_name = form.first_name.data
        last_name = form.last_name.data
        is_admin = form.is_admin.data

        new_user = User.register(username, password, email, first_name,
                                 last_name, is_admin)
        db.session.add(new_user)

        try:
            db.session.commit()
        except Exception:
            flash("username or email already exists")
            return render_template('register.html', form=form)

        session['user_id'] = new_user.id
        return redirect(f'/users/{new_user.username}')

    return render_template('register.html', form=form)
예제 #6
0
def admin_users():

    from forms import NewUserForm

    if not current_user.is_admin:
        abort(403)

    new_user_form = NewUserForm()

    if new_user_form.validate_on_submit():
        account = aac.library.find_or_new_account(new_user_form.username.data)
        account.major_type = 'user'
        account.minor_type = new_user_form.account_type.data
        if account.minor_type == 'api':
            account.encrypt_secret(new_user_form.password.data)
        else:
            account.encrypt_password(new_user_form.password.data)
        aac.library.commit()
        flash("Created new user: {}".format(new_user_form.username.data), "success")

    if request.method == 'POST' and request.form.get('delete'):
        aac.library.delete_account(request.form['delete'])
        aac.library.commit()

    else:
        for k,v in new_user_form.errors.items():
            flash("{}: {}".format(k, v), "error")

    cxt = dict(
        users=[a for a in aac.library.accounts.values() if a['major_type'] == 'user'],
        new_user_form=NewUserForm(),
        **aac.cc
    )

    return aac.render('admin/users.html', **cxt)
예제 #7
0
def register_new():
  '''display new user form(GET),register new user(POST)'''
  # display new user form
  form = NewUserForm()
  # if valid form post
  if form.validate_on_submit():
    un = form.username.data
    pwd = form.password.data
    eml = form.email.data
    fn = form.first_name.data
    ln = form.last_name.data
    # create new user
    user = User.register(un,pwd,eml,fn,ln)
    db.session.add(user)
    # check for duplicate entry
    try:
      db.session.commit()
    except IntegrityError as e:
      # print(inspect.getmembers(e.orig.diag))
      # flash(e.orig.diag.message_detail,'danger')
      form.username.errors = [e.orig.diag.message_detail]
      return render_template('/new_user.html', form=form)
    # add new user to current session
    session['username'] = user.username
    flash('new user added','success')
    return redirect(f'/users/{user.username}')
  # if get or not valid post
  else:
    return render_template('new_user.html', form=form)
예제 #8
0
def alter_users():
    """
    add new user or delete exiting user
    @return: refreshed page indicating success or failure
    """
    if request.form['submit'] == "Create User":
        form = NewUserForm(request.form)
        if form.validate_on_submit():
            if User.get(form.new_email.data) is None:
                User(form.new_email.data, form.nickname.data,
                     form.password.data, form.type.data)
                flash('New user ' + form.new_email.data +
                      ' created successfully')
            else:
                flash('User already exists')
            return redirect(url_for('admin_panel'))
        else:
            return render_template('adminpanel.html',
                                   new_user=form,
                                   users=User.get_all())
    elif request.form['submit'] == "Delete Selected":
        for x in request.form:
            if len(request.form) == 1:
                flash('Error - no user selected')
                break
            if x == current_user.id:
                flash('Error - cannot delete own account')
                break
            if request.form[x] == "on":
                User.delete(x)
                flash('User ' + x + ' deleted successfully')
            return redirect(url_for('admin_panel'))
    return render_template('adminpanel.html',
                           new_user=NewUserForm(),
                           users=User.get_all())
예제 #9
0
def signup_user():
    form = NewUserForm()

    if 'user_id' in session:
        flash(
            "You are already signed up, and signed in. You've been redirected")
        return redirect('/')

    if form.validate_on_submit():
        new_user = User.register(form=form)
        db.session.add(new_user)

        try:
            db.session.commit()
        except IntegrityError:
            flash('oopsies')
            return redirect('/signup')

        reg_user = User.query.get_or_404(new_user.id)
        cart = Order(user_id=new_user.id)

        try:
            db.session.add(cart)
            db.session.commit()

        except IntegrityError:
            flash('There was an error signing you up. Please try again.')
            return redirect('/signup')

        session['user_id'] = new_user.username
        flash("Account created successfully")
        return redirect('/')

    return render_template('signup.html', form=form)
예제 #10
0
def new_user():

    form = NewUserForm()

    if form.validate_on_submit():
        userdata = Userdata()
        bluedata = BlueScores()
        reddata = RedScores()
        if userdata:
            if db_session.query(Userdata).filter(Userdata.username == form.username.data).scalar() != None:
                flash('That username is taken. Please try again.')
                return redirect('/new_user')
            else:
                if form.data['select'] == 'Blue':
                    bluedata.username = form.username.data
                    db_session.add(bluedata)
                    db_session.commit()
                    userdata.blue = True
                    save_changes(userdata, form, new=True)
                    flash('User created successfully!')
                    return redirect('/')
                elif form.data['select'] == 'Red':
                    reddata.username = form.username.data
                    db_session.add(reddata)
                    db_session.commit()
                    userdata.red = True
                    save_changes(userdata, form, new=True)
                    flash('User created successfully!')
                    return redirect('/')
                else:
                    flash('Hmmmm..')
                    return redirect('/new_user')

    return render_template('new_user.html', form=form)
예제 #11
0
def add_user():

    form = NewUserForm()

    if form.validate_on_submit():
        try:
            user = User.signup(
                user_name=form.user_name.data,
                first_name=form.first_name.data,
                last_name=form.last_name.data,
                email=form.email.data,
                password=form.password.data,
                image_url=DEFAULT_IMG)  #form.image_url.data or None)

            # db.session.add(user)
            db.session.commit()

            # session["user_id"] = user.id

        except IntegrityError:
            flash("Username already taken", 'danger')
            return render_template('new_user.html', form=form)

        do_login(user)

        return redirect(f"/user/{user.id}")

    else:
        return render_template('new_user.html', form=form)

    return redirect('/home')
예제 #12
0
def create_user():
    form = NewUserForm()
    if (form.validate_on_submit()):
        user = User(form.username.data, form.password.data)
        db.session.add(user)
        db.session.commit()
        flash("You created a new user!")
    return redirect(url_for('index_user'))
예제 #13
0
def add_user():
		form=NewUserForm () #creating a new user
		if form.validate_on_submit(): #if all the areas in the form that NEED to be complete are go ahead and submit form 
			user=User() #setting up the database to receive the user
			form.populate_obj(user) #inserting the user info into the data
			db.session.add(user) #add
			db.session.commit() #commit
			return redirect('/') #go back to the page
		return render_template('add_user.html', form = form)
예제 #14
0
파일: views.py 프로젝트: KittyLee/Swampr
def add_user():
	form = NewUserForm()
	if form.validate_on_submit():
		user = User()
		form.populate_obj(user)
		db.session.add(user)
		db.session.commit()
		return redirect('/new_post')
	return render_template("add_user.html", form = form)
예제 #15
0
def add_user():
    form = NewUserForm()
    if form.validate_on_submit():
        user = User()
        form.populate_obj(user)
        db.session.add(user)
        db.session.commit()
        return redirect('/')
    return render_template("add_user.html", form=form)
예제 #16
0
 def post(self, email, password, first_name, last_name):
     new_user_form = NewUserForm(email, password, first_name, last_name)
     if new_user_form.validate_on_submit():
         new_user = User(email, password, first_name, last_name)
         db_session.add(new_user)
         db_session.commit()
         return {'success': 'added user with id - {}'.format(new_user.id)}
     else:
         return {"fail": "wrong format"}
예제 #17
0
def create_user():
	form = NewUserForm()
	if form.validate_on_submit():
	  user = User(form.username.data, form.password.data)
	  db.session.add(user)
	  db.session.commit()
	  flash('You Created A User!')
	  return redirect(url_for('index_user'))
	return render_template('new.html', form=form)
예제 #18
0
파일: views.py 프로젝트: pumzi/policyroot
def sign_up():
    form = NewUserForm()
    if form.validate_on_submit():
        user = User()
        form.populate_obj(user)
        db.session.add(user)
        db.session.commit()
        return redirect('/topics')
    return render_template('sign_up.html', form=form)

    form = NewUserForm()  #calling on NewUserForm from forms.py
    if form.validate_on_submit(
    ):  #if statement: saying the if the submit button is pushed then,
        user = User()  #it prepares a new row for the info to be passed in
        form.populate_obj(user)  #then populates new user info entered by user
        db.session.add(user)  #creates the new user
        db.session.commit()  #then commits and saves to the database
        return redirect('/')  #after it is submitted, it redirects to...
    return render_template('.html', form=form)  # the topics page
예제 #19
0
def new_user():
    form = NewUserForm()
    if not form.validate_on_submit():
        return render_template('new_user.html', form=form)

    user = User(username=form.username.data)
    user.set_password(form.password.data)
    db.session.add(user)
    db.session.commit()
    flash(f'New user {form.username.data} registered')
    return redirect(url_for('login'))
예제 #20
0
def add_new_user():
    form = NewUserForm()
    if form.validate_on_submit():
        name = form.name.data,
        email = form.email.data,
        phone = form.phone.data,
        mobile_phone = form.mobile_phone.data,
        status = form.status.data
        add_user(name, email, phone, mobile_phone, status)
        flash('User created successfully', 'success')
        return redirect(url_for('users.all_users'))
    return render_template('add_user.html', form=form, title=title)
예제 #21
0
def user_add():
    form = NewUserForm()
    if form.validate_on_submit():
        new_user = User(username=form.username.data, password=make_hash(form.password.data), active=form.active.data)
        if new_user:
            db_session.add(new_user)
            db_session.commit()
            flash('Neuer Nutzer erfolgreich angelegt!')
            return redirect(url_for('logged_in'))
        else:
            flash('Neuer Nutzer konnte nicht angelegt werden!')
    return render_template('user_add.jinja', form=form)
예제 #22
0
def new_user():
    """Create a new user."""
    form = NewUserForm()
    if form.validate_on_submit():
        user = User(group=form.role.data,
                    first_name=form.first_name.data,
                    last_name=form.last_name.data,
                    email=form.email.data,
                    password=form.password.data)
        user.save()
        flash('User {} successfully created'.format(user.full_name()),
              'form-success')
    return render_template('administrator/new_user.html', form=form)
예제 #23
0
def add_user():
	form = NewUserForm()
	if form.validate_on_submit(): #valid_on_submit is a subfunction
			user = User()
			#if user submits a valid form, populate the object/class user.
			form.populate_obj(user)
			#Then add to the database and commit
			db.session.add(user)
			db.session.commit()
			#direct them back to the landing page
			return redirect('/')

	return render_template("add_user.html",form = form) #Just shows them the form
예제 #24
0
def add_new_user():
    form = NewUserForm()
    if form.validate_on_submit():
        user = User(
            username=form.username.data,
            group_id=form.group.data.id,
            group=form.group.data.name,
        )
        db.session.add(user)
        db.session.commit()
        flash('User created successfully', 'success')
        return redirect(url_for('users.user_page'))
    return render_template('add_user.html', form=form, title=title)
예제 #25
0
파일: views.py 프로젝트: armant/babeml
def new_user():
    """Create a new user."""
    form = NewUserForm()
    if form.validate_on_submit():
        user = User(role=form.role.data,
                    first_name=form.first_name.data,
                    last_name=form.last_name.data,
                    email=form.email.data,
                    password=form.password.data)
        db.session.add(user)
        db.session.commit()
        flash('User {} successfully created'.format(user.full_name()),
              'form-success')
    return render_template('admin/new_user.html', form=form)
예제 #26
0
    def post(self):
        form = NewUserForm()

        if request.method == 'POST':

            if form.validate_on_submit():
                user = User.create()
                form.populate_obj(user)
                user.set_password(form.password.data)
                user.save()

                return resp(url_for('UsersView:get', id=user.id), redirect=True,
                            message=gettext('User was succesfully saved'))
            else:
                return resp('admin/users/add.html', form=form, user=None, status=False,
                            message=gettext('Invalid submission, please check the messages below'))

        return resp('admin/users/add.html', form=form, user=None)
예제 #27
0
def register():
    form = NewUserForm()
    if form.validate_on_submit():
        check_user_exists = User.query.filter_by(
            email=request.form.get('email')).first()
        if check_user_exists:
            flash('Email is already registered. Please login instead.')
            return redirect(url_for('login'))
        hash_and_salted = generate_password_hash(
            password=request.form.get('password'),
            method='pbkdf2:sha256',
            salt_length=8)
        new_user = User(email=request.form.get('email'),
                        name=request.form.get('name'),
                        password=hash_and_salted)
        db.session.add(new_user)
        db.session.commit()
        login_user(new_user)
        return redirect(url_for('get_all_posts'))
    return render_template("register.html", form=form)
예제 #28
0
def submit_new_user():
    """Handle submission of new user form."""

    form = NewUserForm()

    if form.validate_on_submit():
        username = form.username.data
        password = form.password.data
        email = form.email.data
        first_name = form.first_name.data
        last_name = form.last_name.data

        user = User.register(username, password, email, first_name, last_name)

        db.session.commit()
        session['username'] = user.username

        flash(f"User created.")
        return redirect(f"users/{user.username}")
    else:
        return render_template("users/new_user_form.html", form=form)
예제 #29
0
파일: pair.py 프로젝트: Vmodi2/TigerPair
def user_new(side):
    form = NewUserForm()

    if side == 'student':
        username = get_cas()
        user = students.query.filter_by(studentid=username)
    else:
        username, user = verify_user(side)
    msg = ''
    if form.validate_on_submit():
        msg = update_info(user, username, side, form, True)
        if not msg:
            return redirect(url_for('user_dashboard', side=side))
    html = render_template('pages/user/new.html',
                           side=side,
                           user=user,
                           username=username,
                           msg=msg,
                           user_type=side,
                           form=form)
    return make_response(html)
예제 #30
0
def signup():
    """Handle user signup."""

    if "username" in session:
        return redirect(f"/users/{session['username']}")

    form = NewUserForm()
   
    if form.validate_on_submit():
        # collects data from the form inputs by user
        username = form.username.data
        password = form.password.data
        email = form.email.data

        user = User.signup(username, password, email)
        db.session.commit()
        session["username"] = user.username
        flash('Welcome to our site!', 'success')
        return redirect(f"/users/{user.username}")
    else:  
        return render_template("signup.html", form=form)
예제 #31
0
def signup():
    """Handle user signup
    Create new user and add to DB"""
    form = NewUserForm()
    
    if form.validate_on_submit():
        try:
            user = User.signup(
                username=form.username.data,
                password=form.password.data,
                email=form.email.data
            )
            db.session.commit()
            flash(f"Welcome to EnergyGuide, {user.username}", "secondary")
        except IntegrityError:
            flash("Username already taken", "danger")
            return render_template('signup.html', form=form)
        login_user(user)
        return redirect("/")
    else:
        return render_template('signup.html', form=form)    
예제 #32
0
def new_user():
    """Create a new user."""
    form = NewUserForm()
    if form.validate_on_submit():
        role_choice = form.role.data.name
        if role_choice == 'Vendor':
            user = Vendor(email=form.email.data,
                          first_name=form.first_name.data,
                          company_name=form.company_name.data,
                          last_name=form.last_name.data,
                          password=form.password.data)
        elif role_choice == 'Merchant':
            user = Merchant(email=form.email.data,
                            first_name=form.first_name.data,
                            company_name=form.company_name.data,
                            last_name=form.last_name.data,
                            password=form.password.data)
        elif role_choice == 'Administrator':
            user = User(role=form.role.data,
                        email=form.email.data,
                        first_name=form.first_name.data,
                        last_name=form.last_name.data,
                        password=form.password.data)
        else:
            # invalid selection for user role
            flash('Invalid role selection', 'form-error')
            return render_template('admin/new_user.html', form=form)
        db.session.add(user)
        db.session.commit()
        token = user.generate_confirmation_token()
        send_email(user.email,
                   'You Are Invited To Join',
                   'account/email/invite',
                   user=user,
                   user_id=user.id,
                   token=token)
        flash('User {} successfully created'.format(user.full_name()),
              'form-success')
        return redirect(url_for('admin.new_user'))
    return render_template('admin/new_user.html', form=form)
예제 #33
0
def new_user():
    """Create a new user."""
    form = NewUserForm()
    if form.validate_on_submit():
        role_choice = form.role.data.name
        if role_choice == 'Vendor':
            user = Vendor(email=form.email.data,
                          first_name=form.first_name.data,
                          company_name=form.company_name.data,
                          last_name=form.last_name.data,
                          password=form.password.data)
        elif role_choice == 'Merchant':
            user = Merchant(email=form.email.data,
                            first_name=form.first_name.data,
                            company_name=form.company_name.data,
                            last_name=form.last_name.data,
                            password=form.password.data)
        elif role_choice == 'Administrator':
            user = User(role=form.role.data,
                        email=form.email.data,
                        first_name=form.first_name.data,
                        last_name=form.last_name.data,
                        password=form.password.data)
        else:
            # invalid selection for user role
            flash('Invalid role selection', 'form-error')
            return render_template('admin/new_user.html', form=form)
        db.session.add(user)
        db.session.commit()
        token = user.generate_confirmation_token()
        send_email(user.email,
                   'You Are Invited To Join',
                   'account/email/invite',
                   user=user,
                   user_id=user.id,
                   token=token)
        flash('User {} successfully created'.format(user.full_name()),
              'form-success')
        return redirect(url_for('admin.new_user'))
    return render_template('admin/new_user.html', form=form)
def adduser_page():
    searchform = SearchForm()
    if searchform.validate_on_submit():
        flash('Search requested for item {}'.format(searchform.search.data))
        return redirect('/searchuser/' + searchform.search.data)

    form = NewUserForm()
    if form.validate_on_submit():
        flash(
            'New user instance requested for\nfname:{}\nlname:{}\nfootsize:{}'.
            format(form.fname.data, form.lname.data, form.footsize.data))
        user = User(fname=form.fname.data,
                    lname=form.lname.data,
                    footsize=form.footsize.data)
        db.session.add(user)
        db.session.commit()
        return redirect('/searchuser/' + str(user.id))

    return render_template('newuser.html',
                           title='NewUser',
                           searchform=searchform,
                           form=form)
예제 #35
0
def newuser():
    form=NewUserForm()
    if not form.validate_on_submit():
        return render_template('new_user.html', form=form)

    username = form.username.data.strip()
    email = form.email.data.strip()
    
    if User.query.filter(User.username == username).count():
        flash(f'Error: {username} user already exists')
        return render_template('new_user.html', form=form)

    if User.query.filter(User.email == email).count():
        flash(f'Error: {email} user email address already exists')
        return render_template('new_user.html', form=form)

    user = User(username=form.username.data, email=form.email.data)
    user.set_password(form.password.data)
    db.session.add(user)
    db.session.commit()
    flash(f'New user {form.username.data} registered')
    return redirect('/login')
예제 #36
0
def new_user():
    form = NewUserForm()

    if form.validate_on_submit():

        if not user_exists(form.username.data):
            role = models.ROLE_USER
            if form.admin.data == True:
                role = models.ROLE_ADMIN
            u = models.User(username=form.username.data, role=role)
            u.hash_password(form.password.data)

            db.session.add(u)
            db.session.commit()

            flash(u'New user created successfully.', 'alert-success')
            return redirect(url_for("index"))

        else:
            flash(u'Username is taken.', 'alert-danger')

    return render_template("new_user.html", form=form)
예제 #37
0
def register():
    form = NewUserForm()

    if form.validate_on_submit():
        username = form.username.data
        password = form.password.data
        email = form.email.data
        first_name = form.first_name.data
        last_name = form.last_name.data
        new_user = User.register(username=username,
                                 pwd=password,
                                 email=email,
                                 first=first_name,
                                 last=last_name)
        flash(f"Welcome {username}! You have successfully registered")
        db.session.add(new_user)
        db.session.commit()
        session['user_id'] = new_user.username
        return redirect(f'/users/{username}')

    else:
        return render_template('register.html', form=form)
예제 #38
0
def add_user():
    if not current_user.is_admin:
        flash('You are not admin user!')
        return redirect(url_for('main.index'))
    user_form = NewUserForm()
    new_user = AppUser()
    msg = ''
    if user_form.validate_on_submit():
        new_user.username = user_form.username.data
        password = user_form.password.data
        if AppUser.query.filter_by(username=new_user.username).count() > 1:
            flash('User name already exists! %s ' % new_user.username, 'error')
            return render_template('add_user.html', form=user_form)
        # print("%s:%s:%s" % (username, password, generate_password_hash('redhat')))
        # print("%s:%s:%s" % (username, password, generate_password_hash('redhat')))
        new_user.password = generate_password_hash(password)
        new_user.email = user_form.email.data
        new_user.role = user_form.role.data
        report_db.session.add(new_user)
        report_db.session.commit()
        flash('Add user successfully %s ' % new_user.username, 'info')
        return redirect(url_for('main.login'))
    return render_template('add_user.html', form=user_form)
예제 #39
0
def add_user():

    form = NewUserForm()

    if form.validate_on_submit():
        try:
            user = User.signup(user_name=form.user_name.data,
                               email=form.email.data,
                               password=form.password.data)

            # db.session.add(user)
            # session["user_id"] = user.id

        except IntegrityError:
            flash("Username already taken", 'danger')
            return render_template('new_user.html', form=form)

        return redirect(f"/user/{user.id}")  ## CHANGE TO ADMIN ID NUMBER

    else:
        return render_template('new_user.html', form=form)

    return redirect('/home')
예제 #40
0
def register():
    """
        Shows a form for user to register. When the form is submitted,
        registers the user with the input the user submitted.
        rtype: str
    """
    # if already logged in, go to user's page
    current_username = session.get("username", None)
    if current_username:
        return redirect(f"/users/{current_username}")

    form = NewUserForm()

    if form.validate_on_submit():
        # get data submitted
        username = form.username.data
        password = form.password.data
        email = form.email.data
        first_name = form.first_name.data
        last_name = form.last_name.data

        # register user
        user = User.register(username, password, email, first_name, last_name)
        session["username"] = user.username
        db.session.add(user)
        
        # might break if username has already been used
        try:
            db.session.commit()
        except IntegrityError:
            form.username.errors.append("That username already exists")
            return render_template("register.html", form=form)

        return redirect(f"/users/{username}")

    return render_template("register.html", form=form)