hanze/programmeerles-ouderen

pgmles/forms.py in dev_2
Repositories | Summary | Log | Files

forms.py (4210B) download


  1from flask_login import current_user
  2from flask_wtf import FlaskForm
  3from flask_wtf.file import FileAllowed, FileField
  4from wtforms import (BooleanField, HiddenField, PasswordField, StringField,
  5                     SubmitField, TextAreaField, SelectField)
  6from wtforms.validators import (DataRequired, Email, EqualTo, Length,
  7                                ValidationError)
  8
  9from .models import User
 10
 11
 12class RegistrationForm(FlaskForm):
 13    username = StringField('Username',
 14                           validators=[DataRequired(), Length(min=2, max=20)])
 15    email = StringField('Email',
 16                        validators=[DataRequired(), Email()])
 17    password = PasswordField('Password', validators=[DataRequired()])
 18    confirm_password = PasswordField('Confirm Password',
 19                                     validators=[DataRequired(), EqualTo('password')])
 20    submit = SubmitField('Sign Up')
 21
 22    def validate_username(self, username):
 23        user = User.query.filter_by(username=username.data).first()
 24        if user:
 25            raise ValidationError(
 26                'That username is taken. Please choose a different one.')
 27
 28    def validate_email(self, email):
 29        user = User.query.filter_by(email=email.data).first()
 30        if user:
 31            raise ValidationError(
 32                'That email is taken. Please choose a different one.')
 33
 34
 35class LoginForm(FlaskForm):
 36    email = StringField('Email',
 37                        validators=[DataRequired(), Email()])
 38    password = PasswordField('Password', validators=[DataRequired()])
 39    remember = BooleanField('Remember Me')
 40    submit = SubmitField('Login')
 41
 42
 43class UpdateAccountForm(FlaskForm):
 44    username = StringField('Username', validators=[
 45                           DataRequired(), Length(min=2, max=20)])
 46    email = StringField('Email', validators=[DataRequired(), Email()])
 47    picture = FileField('Update Profile Picture', validators=[
 48                        FileAllowed(['jpg', 'png'])])
 49    submit = SubmitField('Update')
 50
 51    def validate_username(self, username):
 52        if username.data != current_user.username:
 53            user = User.query.filter_by(username=username.data).first()
 54            if user:
 55                raise ValidationError(
 56                    'That username is taken. Please choose a different one.')
 57
 58    def validate_email(self, email):
 59        if email.data != current_user.email:
 60            user = User.query.filter_by(email=email.data).first()
 61            if user:
 62                raise ValidationError(
 63                    'That email is taken. Please choose a different one.')
 64
 65
 66class LanguageForm(FlaskForm):
 67    name = StringField('Name', validators=[DataRequired()])
 68    info = TextAreaField('Info', validators=[DataRequired()])
 69    submit = SubmitField('Update')
 70
 71class NewCourseForm(FlaskForm):
 72    name = StringField('Title', validators=[
 73                           DataRequired(), Length(min=1, max=100)])
 74    description = TextAreaField('Description', validators=[DataRequired()])
 75    teacher_id = SelectField('Teacher', validators=[DataRequired()], coerce=int)
 76    weekday = StringField('Weekday', validators=[DataRequired()])
 77    start = StringField('Start', validators=[DataRequired()])
 78    end = StringField('End', validators=[DataRequired()])
 79    location = StringField('Location', validators=[
 80                           DataRequired(), Length(min=1, max=100)])
 81    submit = SubmitField('Add')
 82
 83
 84class SubscribeForm(FlaskForm):
 85    lang_id = HiddenField()
 86    submit = SubmitField('Subscribe')
 87
 88
 89class UnsubscribeForm(FlaskForm):
 90    lang_id = HiddenField()
 91    submit = SubmitField('Unsubscribe')
 92
 93
 94class PostForm(FlaskForm):  # redundant
 95    title = StringField('Title', validators=[DataRequired()])
 96    content = TextAreaField('Content', validators=[DataRequired()])
 97    submit = SubmitField('Post')
 98
 99class SearchForm(FlaskForm):
100    username = StringField('Username', validators=[
101                           DataRequired(), Length(min=2, max=20)])
102    submit = SubmitField('Search')
103
104class PermissionForm(FlaskForm):
105    type = SelectField('Type',  choices=[('client', 'Klant'), ('teacher', 'Leraar'), ('admin', 'Administrator')])
106    submit = SubmitField('Update')