text: #!/usr/bin/env python
  # coding: utf-8
  
  from flask_wtf import FlaskForm
  from wtforms import StringField, PasswordField, BooleanField, SubmitField
  from wtforms.validators import ValidationError, DataRequired, Email, EqualTo
  from flask_babel import _, lazy_gettext as _l
  from app.models import User
  
  
  class LoginForm(FlaskForm):
      username = StringField(_l('Username'), validators=[DataRequired()])
      password = PasswordField(_l('Password'), validators=[DataRequired()])
      remember_me = BooleanField(_l('Remember Me'))
      submit = SubmitField(_l('Sign In'))
  
  
  class RegistrationForm(FlaskForm):
      username = StringField(_l('Username'), validators=[DataRequired()])
      email = StringField(_l('Email'), validators=[DataRequired()])
      name = StringField(_l('Name'))
      password = PasswordField(_l('Password'), validators=[DataRequired()])
      password2 = PasswordField(_l('Repeat Password', validators=[DataRequired(),
                                                                  EqualTo('password')]))
      submit = SubmitField(_l('Register'))
  
      def validate_username(self, username):
          user = User.query.filter_by(username=username.data).first()
          if user is not None:
              raise ValidationError(_('Please use a different username.'))
  
      def validate_email(self, email):
          user = User.query.filter_by(email=email.data).first()
          if user is not None:
              raise ValidationError(_('Please use a different email address.'))
  
  
  class ResetPasswordRequestForm(FlaskForm):
      email = StringField(_l('Email'), validators=[DataRequired(), Email()])
      submit = SubmitField(_l('Request Password Reset'))
  
  
  class RequestPasswordForm(FlaskForm):
      password = PasswordField(_l('Password'), validators=[DataRequired()])
      password2 = PasswordField(_l('Repeat Password', validators=[DataRequired(),
                                                                  EqualTo('password')]))
      submit = SubmitField(_l('Register'))
  