forms.py (4076B) download
1from flask_wtf import FlaskForm
2from flask_wtf.file import FileAllowed, FileField
3from wtforms import BooleanField, PasswordField, StringField, SubmitField, IntegerField, SelectField
4from wtforms.validators import DataRequired, Email, EqualTo, Length, ValidationError
5
6from .models import User
7
8current_user: User
9
10""" registration form for register.html """
11
12
13class RegistrationForm(FlaskForm):
14 name = StringField('Naam', validators=[
15 DataRequired(), Length(min=5, max=20)])
16 email = StringField('E-Mail', validators=[DataRequired(), Email()])
17 password = PasswordField('Wachtwoord', validators=[DataRequired()])
18 confirm_password = PasswordField('Wachtwoord herhalen', validators=[
19 DataRequired(), EqualTo('password')])
20 phone = StringField('Telefoon', validators=[DataRequired(), Length(min=5)])
21 street = StringField('Straat', validators=[DataRequired()])
22 housenumber = IntegerField('Huisnummer', validators=[DataRequired()])
23 postcode = StringField('Postcode', validators=[DataRequired()])
24 place = StringField('Plaats', validators=[DataRequired()])
25 submit = SubmitField('Registeren')
26
27 """ validates whether name is already in use """
28
29 def validate_name(self, name):
30 if User.query.filter_by(name=name.data).first():
31 raise ValidationError(
32 'Deze gebruikersnaam bestaat al, kies een andere.')
33
34 """ validates whether e-mail is already in use """
35
36 def validate_email(self, email):
37 if User.query.filter_by(email=email.data).first():
38 raise ValidationError(
39 'Deze e-mail bestaat al, log in als dat uw e-mail is.')
40
41 def validate_phone(self, phone):
42 for c in phone.data:
43 if c not in '0123456789- ':
44 raise ValidationError('Dit belnummer is niet geldig.')
45
46 def validate_postcode(self, code):
47 if len(code.data) != 6 or not code.data[0:4].isnumeric() or not code.data[4:6].isalpha():
48 raise ValidationError('De postcode is niet geldig.')
49
50
51""" login form for login.html """
52
53
54class LoginForm(FlaskForm):
55 email = StringField('E-Mail', validators=[DataRequired(), Email()])
56 password = PasswordField('Wachtwoord', validators=[DataRequired()])
57 remember = BooleanField('Herinneren')
58 submit = SubmitField('Inloggen')
59
60
61""" update account form for account.html """
62
63
64class UpdateAccountForm(FlaskForm):
65 name = StringField('Naam', validators=[
66 DataRequired(), Length(min=2, max=20)])
67 email = StringField('E-Mail', validators=[DataRequired(), Email()])
68 password = PasswordField('Wachtwoord', validators=[])
69 confirm_password = PasswordField(
70 'Wachtwoord herhalen', validators=[EqualTo('password')])
71 picture = FileField('Profielfoto bewerken', validators=[
72 FileAllowed(['jpg', 'png'])])
73 submit = SubmitField('Bewerken')
74
75 """ validates whether name is already in use """
76
77 def validate_name(self, name):
78 if name.data != current_user.name and User.query.filter_by(name=name.data).first():
79 raise ValidationError(
80 'Deze gebruikersnaam bestaat al, kies een andere.')
81
82 """ validates whether e-mail is already in use """
83
84 def validate_email(self, email):
85 if email.data != current_user.email and User.query.filter_by(email=email.data).first():
86 raise ValidationError(
87 'Deze e-mail bestaat al, log in als dat uw e-mail is')
88
89
90class UpdateTrapForm(FlaskForm):
91 name = StringField('Naam')
92 submit = SubmitField('Bewerken')
93
94
95""" search form for admin.html """
96
97
98class SearchForm(FlaskForm):
99 username = StringField('Naam', validators=[
100 DataRequired(), Length(min=2, max=20)])
101 submit = SubmitField('Zoeken')
102
103
104""" account-settings form for admin_user.html """
105
106
107class AdminForm(FlaskForm):
108 type = SelectField('Type', choices=[
109 ('client', 'Klant'), ('admin', 'Administrator')])
110 submit = SubmitField('Bewerken')