from flask_wtf import FlaskForm from flask_wtf.file import FileField, FileAllowed from flask_login import current_user from wtforms import StringField, PasswordField, SubmitField, BooleanField, TextAreaField from wtforms.validators import DataRequired, Length, Email, EqualTo, ValidationError from minibase.models import User class registrationForm(FlaskForm): 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') def validate_username(self, 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): email = User.query.filter_by(email=email.data).first() 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 postForm(FlaskForm): title = StringField('Title', validators=[DataRequired(),Length(min = 3, max = 100)]) content = TextAreaField('Content', validators=[DataRequired()]) submit = SubmitField('Post')