from flask_wtf import FlaskForm from flask_wtf.file import FileField, FileAllowed from wtforms import StringField, PasswordField, SubmitField, BooleanField from wtforms.validators import DataRequired, Length, Email, EqualTo, ValidationError from flask_login import current_user from minibase.models import User from minibase.config import themeMinibase class registrationForm(FlaskForm): # Decalarion of the fields for the form and it's propereties> username = StringField('User Name', validators=[DataRequired(), Length(min=3, 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') # Definiton of the validation that has to be made in order to validate the form def validate_username(self, username): user = User.query.filter_by(username=username.data).first() # Database Querry if user: raise ValidationError('That username is taken please choose another one') def validate_email(self, email): email = User.query.filter_by(email=email.data).first() # Database Querry if email: raise ValidationError('That email is taken do you have an acocunt ?') class loginForm(FlaskForm): email = StringField('Email', validators=[DataRequired(), Email()]) password = PasswordField('Password', validators=[DataRequired()]) remember = BooleanField('Remember Me') submit = SubmitField('Log In') class updateAccountForm(FlaskForm): username = StringField('User Name', validators=[DataRequired(), Length(min=3, max=20)]) email = StringField('Email', validators=[DataRequired(), Email()]) picture = FileField('Update Profile Picture', validators=[FileAllowed(['jpg', 'png'])]) submit = SubmitField('Update') def validate_username(self, username): if username.data != current_user.username: user = User.query.filter_by(username=username.data).first() if user: raise ValidationError('That username is taken please choose another one') def validate_email(self, email): if email.data != current_user.email: email = User.query.filter_by(email=email.data).first() if email: raise ValidationError('That email is taken do you have an acocunt ?') class requestResetForm(FlaskForm): email = StringField('Email', validators=[DataRequired(), Email()]) submit = SubmitField('Request Password Reset') def validate_email(self, email): email = User.query.filter_by(email=email.data).first() if email is None: raise ValidationError('There is no Account with this email your must register first.') class resetPasswordForm(FlaskForm): password = PasswordField('Password', validators=[DataRequired()]) password_confirm = PasswordField('Confirm Password', validators=[DataRequired(), EqualTo('password')]) submit = SubmitField('Reset Password')