from flask_wtf import FlaskForm from wtforms import StringField, PasswordField, BooleanField, SubmitField from wtforms.validators import DataRequired, Email, EqualTo, Length, ValidationError from app.models import User class RegistrationForm(FlaskForm): username = StringField("Username", validators=[DataRequired(), Length(min=3, max=64)]) email = StringField("Email", validators=[DataRequired(), Email()]) password = PasswordField("Password", validators=[DataRequired(), Length(min=8)]) confirm_password = PasswordField( "Confirm Password", validators=[DataRequired(), EqualTo("password")] ) submit = SubmitField("Create Account") def validate_username(self, username): if User.query.filter_by(username=username.data).first(): raise ValidationError("That username is already taken.") def validate_email(self, email): if User.query.filter_by(email=email.data).first(): raise ValidationError("That email is already registered.") class LoginForm(FlaskForm): email = StringField("Email", validators=[DataRequired(), Email()]) password = PasswordField("Password", validators=[DataRequired()]) remember_me = BooleanField("Remember Me") submit = SubmitField("Log In")