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.

82 lines
4.0 KiB

from flask_wtf import FlaskForm
from flask_wtf.file import FileField, FileAllowed
from wtforms import StringField, PasswordField, SubmitField, BooleanField, URLField
from wtforms.validators import DataRequired, Length, Email, EqualTo, ValidationError
from flask_login import current_user
from iot.blueprints.user.models import Users
class registrationForm(FlaskForm): # Defines the form class to be used for the user registretion
# Decalarion of the fields for the form and it's propereties
username = StringField('User Name', validators=[DataRequired(), Length(min=4, max=20)])
email = StringField('Email', validators=[DataRequired(), Email()])
password = PasswordField('Password', validators=[DataRequired()])
password_confirm = PasswordField('Confirm Password', validators=[DataRequired(), EqualTo('password')])
submit = SubmitField('Sing Up')
# Queries to be made in order to validate the form : If username exists
def validate_username(self, username):
user = Users.query.filter_by(username=username.data).first() # Database Querry
if user:
raise ValidationError('That username is taken please choose another one')
# Queries to be made in order to validate the form : If Email exists
def validate_email(self, email):
email = Users.query.filter_by(email_account=email.data).first() # Database Querry
if email:
raise ValidationError('That email is taken do you have an acocunt ?')
class loginForm(FlaskForm): # Defines the form class to be used for the user login
email = StringField('Email', validators=[DataRequired(), Email()])
password = PasswordField('Password', validators=[DataRequired()])
remember = BooleanField('Remember Me')
submit = SubmitField('Log In')
class updateAccountForm(FlaskForm): # Defines the form class to be used for the user update
username = StringField('User Name', validators=[DataRequired(), Length(min=3, max=20)])
email_account = StringField('Email Account', validators=[DataRequired(), Email()])
email_comm = StringField('Email Communication', validators=[DataRequired(), Email()])
picture = FileField('Update Profile Picture', validators=[FileAllowed(['jpg', 'png'])])
submit = SubmitField('Update')
# Queries to be made in order to validate the form : If username exists
def validate_username(self, username):
if username.data != current_user.username:
user = Users.query.filter_by(username=username.data).first()
if user:
raise ValidationError('That username is taken please choose another one')
# Queries to be made in order to validate the form : If Email exists
def validate_email(self, email):
if email.data != current_user.email_account:
email = Users.query.filter_by(email_account=email.data).first()
if email:
raise ValidationError('That email is taken do you have an acocunt ?')
class requestResetForm(FlaskForm): # Defines the form class to be used for the reset form
email = StringField('Email', validators=[DataRequired(), Email()])
submit = SubmitField('Request Password Reset')
# Queries to be made in order to validate the form : If Email exists
def validate_email(self, email):
email = Users.query.filter_by(email_account=email.data).first()
if email is None:
raise ValidationError('There is no Account with this email your must register first.')
class resetPasswordForm(FlaskForm): # Defines the form class to be used for password reset form
password = PasswordField('Password', validators=[DataRequired()])
password_confirm = PasswordField('Confirm Password', validators=[DataRequired(), EqualTo('password')])
submit = SubmitField('Reset Password')
class updateRoleForm(FlaskForm):
id = StringField('ID', render_kw={'disabled':''})
role = StringField('Role', validators=[DataRequired(), Length(min=4, max=20)])
description = StringField('Description', validators=[DataRequired(), Length(min=4, max=200)])
submit = SubmitField()