-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathforms.py
More file actions
94 lines (69 loc) · 3.43 KB
/
forms.py
File metadata and controls
94 lines (69 loc) · 3.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField, IntegerField
from wtforms.validators import InputRequired, Length, EqualTo, ValidationError, NumberRange
from passlib.hash import pbkdf2_sha256
from models import User
def invalid_credentials(form, field):
""" Username and password checker """
username = form.username.data
password = field.data
user_object = User.query.filter_by(username=username).first()
if user_object is None:
raise ValidationError("Username or password is incorrect")
elif not pbkdf2_sha256.verify(password, user_object.password):
raise ValidationError("Username or password is incorrect")
class RegistrationForm(FlaskForm):
"""" Registration form """
fullname = StringField("fullname_label",
validators=[InputRequired(message="Name required"),
Length(min=4, max=25, message="Username must be between 4 and 25 characters")])
username = StringField("username_label",
validators=[InputRequired(message="Email required"),
Length(min=4, max=25, message="Email must be between 4 and 25 characters")])
password = PasswordField("password_label",
validators=[InputRequired(message="Password required"),
Length(min=4, max=25, message="Password must be between 4 and 25 characters")])
confirm_pswd = PasswordField("confirm_pswd_lab",
validators=[InputRequired(message="Password required"),
EqualTo('password', message="Passwords must match")])
submit_button = SubmitField('Create')
def validate_username(self, username):
user_object = User.query.filter_by(username=username.data).first()
if user_object:
raise ValidationError("Username already exists. Select a different username.")
class LoginForm(FlaskForm):
""" Login Form """
username = StringField('username_label',
validators=[InputRequired(message="Username required")])
password = StringField('password_label',
validators=[InputRequired(message="Password required"),
invalid_credentials])
submit_button = SubmitField('Log in')
class ProjectForm(FlaskForm):
""" Project Form """
name = StringField('name_label',
validators=[InputRequired(message="Project name required"), Length(min=4)])
description = StringField('name_label',
validators=[InputRequired(message="Description required"), Length(min=4)])
submit_button = SubmitField('Create')
class DeleteProjectForm(FlaskForm):
""" Project Delete Form """
name = StringField('name_label',
validators=[InputRequired(message="Project name required"), Length(min=1)])
submit_button = SubmitField('Delete')
class SearchProjects(FlaskForm):
""" Search Project Form """
name = StringField('name_label', validators=[])
submit_button = SubmitField('Search')
class QuestionForm(FlaskForm):
""" Question Form """
name = StringField('name_label',
validators=[InputRequired(message="Question name required"), Length(min=4)])
number = IntegerField('number_label',
validators=[InputRequired(message="Question number required"), NumberRange(min=0, max=None)])
submit_button = SubmitField('Create')
class SolutionForm(FlaskForm):
""" Solution Form """
description = StringField('description_label',
validators=[InputRequired(message="Solution description")])
submit_button = SubmitField('Create')