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')