graceful handling of database integrity violations in registration
This commit is contained in:
parent
fd96be4752
commit
8076d8571d
1 changed files with 17 additions and 3 deletions
|
@ -6,6 +6,7 @@ from goathacks.registration.forms import LoginForm, PwResetForm, RegisterForm, R
|
|||
from werkzeug.security import check_password_hash, generate_password_hash
|
||||
from flask_mail import Message
|
||||
import ulid
|
||||
from sqlalchemy.exc import IntegrityError
|
||||
|
||||
from goathacks import db, mail as app_mail
|
||||
from goathacks.models import PwResetRequest, User
|
||||
|
@ -60,8 +61,20 @@ def register():
|
|||
dietary_restrictions=dietary_restrictions,
|
||||
newsletter=newsletter
|
||||
)
|
||||
db.session.add(user)
|
||||
db.session.commit()
|
||||
|
||||
#try to add the user to the database, checking for duplicate users
|
||||
try:
|
||||
db.session.add(user)
|
||||
db.session.commit()
|
||||
except IntegrityError as err:
|
||||
db.session.rollback()
|
||||
if "duplicate key value violates unique constraint" in str(err):
|
||||
flash("User with email " + email + " already exists.")
|
||||
else:
|
||||
flash("An unknown error occurred.")
|
||||
return render_template("register.html", form=form)
|
||||
|
||||
#user successfully registered, so login
|
||||
flask_login.login_user(user)
|
||||
|
||||
if waitlisted:
|
||||
|
@ -129,6 +142,7 @@ def reset():
|
|||
user_id=user.id,
|
||||
expires=datetime.now() + timedelta(minutes=30)
|
||||
)
|
||||
|
||||
db.session.add(r)
|
||||
db.session.commit()
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue