from flask_wtf import FlaskForm from wtforms import StringField from wtforms import PasswordField from wtforms import SubmitField from wtforms.validators import DataRequired from wtforms.validators import Length from wtforms.validators import Email from wtforms.validators import EqualTo from wtforms.validators import ValidationError from core import User class RegisterForm(FlaskForm): username = StringField('Username', validators=[DataRequired(), Length(min=4, max=24)]) email = StringField('Email', validators=[DataRequired(), Email()]) password = PasswordField('Password', validators=[DataRequired(), Length(min=8)]) confirm_password = PasswordField('Confirm Password', validators=[DataRequired(), EqualTo('password', message="Passwords must match!")]) submit = SubmitField("Sign Up") def validate_username(self, username): user = User.query.filter_by(username=username.data).first() if user: raise ValidationError("User exists already! Please use a different name!") class LoginForm(FlaskForm): username = StringField('Username', validators=[DataRequired(), Length(min=4, max=24)]) password = PasswordField('Password', validators=[DataRequired(), Length(min=8, max=32)]) submit = SubmitField("Login")