todo_app_flask/app/auth/register.py

45 lines
1.4 KiB
Python

#!/usr/bin/env python3
import psycopg2
from flask import Blueprint, redirect, url_for, flash, render_template
from flask_login import current_user
from app.forms import RegistrationForm
from app.models import Contributor
from flask import current_app as app
from .. import db
reg = Blueprint(
"reg", __name__, template_folder="templates"
)
@reg.route("/register", methods=["GET", "POST"])
def register():
if current_user.is_authenticated:
return redirect(url_for('cats.index'))
form = RegistrationForm()
nl = (('cancel', url_for('auths.login')), )
if form.validate_on_submit():
set_contributor_id_seq()
contributor = Contributor(name=form.username.data, email=form.email.data)
contributor.set_password(form.password.data)
db.session.add(contributor)
db.session.commit()
flash("Congratulations, you are now a registered user!")
return redirect(url_for('auths.login'))
return render_template('register.html', title='Register', form=form, navbar_links=nl)
def set_contributor_id_seq():
conn = psycopg2.connect(
dbname=app.config['DATABASE_NAME'],
user=app.config['DATABASE_USER'],
host=app.config['DATABASE_HOST'],
password=app.config['DATABASE_PASSWORD']
)
cur = conn.cursor()
cur.execute("SELECT setval('contributor_id_seq', (SELECT MAX(id) FROM contributor))")
conn.commit()
conn.close()