You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
2.3 KiB
66 lines
2.3 KiB
from flask import flash, redirect, render_template, url_for
|
|
from flask_bcrypt import generate_password_hash
|
|
from flask_login import login_user
|
|
from sqlalchemy.exc import (
|
|
DatabaseError,
|
|
DataError,
|
|
IntegrityError,
|
|
InterfaceError,
|
|
InvalidRequestError,
|
|
)
|
|
from werkzeug.routing import BuildError
|
|
|
|
from app import db
|
|
from application.forms.registerform import RegisterForm
|
|
from application.models.usermodel import User
|
|
|
|
|
|
def RegisterUser():
|
|
registerform = RegisterForm()
|
|
if registerform.validate_on_submit():
|
|
try:
|
|
username = registerform.username.data
|
|
email = registerform.email.data
|
|
password = registerform.confirmpassword.data
|
|
|
|
newuser = User(
|
|
username=username,
|
|
email=email,
|
|
password=generate_password_hash(password),
|
|
)
|
|
|
|
db.session.add(newuser)
|
|
db.session.commit()
|
|
flash("Account Succesfully created", "success")
|
|
login_user(newuser)
|
|
return redirect(url_for("index"))
|
|
|
|
except InvalidRequestError:
|
|
db.session.rollback()
|
|
registerform.email.errors.append("Something went wrong!")
|
|
flash("Something went wrong!", "danger")
|
|
except IntegrityError:
|
|
db.session.rollback()
|
|
registerform.email.errors.append("User already exists!")
|
|
flash("User already exists!", "warning")
|
|
except DataError:
|
|
db.session.rollback()
|
|
registerform.email.errors.append("Invalid Entry")
|
|
flash("Invalid Entry", "warning")
|
|
except InterfaceError:
|
|
db.session.rollback()
|
|
registerform.email.errors.append(
|
|
"Error connecting to the database"
|
|
)
|
|
flash("Error connecting to the database", "danger")
|
|
except DatabaseError:
|
|
db.session.rollback()
|
|
registerform.email.errors.append(
|
|
"Error connecting to the database"
|
|
)
|
|
flash("Error connecting to the database", "danger")
|
|
except BuildError:
|
|
db.session.rollback()
|
|
registerform.email.errors.append("Unknown error occured!")
|
|
flash("An error occured !", "danger")
|
|
return render_template("user/register.html", registerform=registerform)
|
|
|