text: # -*- coding: utf-8 -*-
  """Public forms."""
  from flask_wtf import FlaskForm
  from wtforms import PasswordField, StringField
  from wtforms.validators import DataRequired, Optional
  
  from app.user.models import User
  
  
  class LoginForm(FlaskForm):
      """Login form."""
  
      username = StringField("Username", validators=[DataRequired()])
      password = PasswordField("Password", validators=[DataRequired()])
  
      def __init__(self, *args, **kwargs):
          """Create instance."""
          super(LoginForm, self).__init__(*args, **kwargs)
          self.user = None
  
      def validate(self):
          """Validate the form."""
          initial_validation = super(LoginForm, self).validate()
          if not initial_validation:
              return False
  
          self.user = User.query.filter_by(username=self.username.data).first()
          if not self.user:
              self.username.errors.append("Unknown username")
              return False
  
          if not self.user.check_password(self.password.data):
              self.password.errors.append("Invalid password")
              return False
  
          if not self.user.active:
              self.username.errors.append("User not activated")
              return False
          return True
  
  class ContactForm(FlaskForm):
      """Login form."""
  
      name = StringField("Your Name", validators=[DataRequired()])
      email = StringField("Your email address", validators=[DataRequired()])
      company_name = StringField("Your company name", validators=[Optional()])
      project_description = StringField("Tell us about your project", validators=[Optional()])
  