Blame view

flaskr/forms.py 3.88 KB
c81df6e7   Goutte   Add the forms mod...
1
2
3
4
5
6
7
8
9
from flask_wtf import Form
from wtforms import \
    StringField, \
    PasswordField, \
    TextAreaField, \
    BooleanField
from wtforms import validators

from .models import User
35a99ac7   Goutte   Move more text co...
10
11
12
from .content import content

form_content = content['estimate']['form']
c81df6e7   Goutte   Add the forms mod...
13
14
15
16
17
18


# ESTIMATION FORM #############################################################

class EstimateForm(Form):
    email = StringField(
35a99ac7   Goutte   Move more text co...
19
20
        label=form_content['email']['label'],
        description=form_content['email']['description'],
c81df6e7   Goutte   Add the forms mod...
21
22
23
24
25
26
        validators=[
            validators.DataRequired(),
            validators.Email(),
        ],
    )
    first_name = StringField(
35a99ac7   Goutte   Move more text co...
27
28
        label=form_content['first_name']['label'],
        description=form_content['first_name']['description'],
c81df6e7   Goutte   Add the forms mod...
29
30
31
32
33
34
        validators=[
            validators.Optional(),
            validators.Length(max=1024),
        ],
    )
    last_name = StringField(
35a99ac7   Goutte   Move more text co...
35
36
        label=form_content['last_name']['label'],
        description=form_content['last_name']['description'],
c81df6e7   Goutte   Add the forms mod...
37
38
39
40
41
42
        validators=[
            validators.Optional(),
            validators.Length(max=1024),
        ],
    )
    institution = StringField(
35a99ac7   Goutte   Move more text co...
43
44
        label=form_content['institution']['label'],
        description=form_content['institution']['description'],
c81df6e7   Goutte   Add the forms mod...
45
46
47
48
49
50
        validators=[
            validators.Optional(),
            validators.Length(max=1024),
        ],
    )
    comment = TextAreaField(
35a99ac7   Goutte   Move more text co...
51
52
        label=form_content['comment']['label'],
        description=form_content['comment']['description'],
c81df6e7   Goutte   Add the forms mod...
53
54
55
56
57
58
        validators=[
            validators.Optional(),
            validators.Length(max=2048),
        ],
    )
    origin_addresses = TextAreaField(
35a99ac7   Goutte   Move more text co...
59
60
        label=form_content['origin_addresses']['label'],
        description=form_content['origin_addresses']['description'],
c81df6e7   Goutte   Add the forms mod...
61
62
63
        validators=[
            validators.DataRequired(),
        ],
35a99ac7   Goutte   Move more text co...
64
65
66
        render_kw={
            "placeholder": form_content['origin_addresses']['placeholder']
        },
c81df6e7   Goutte   Add the forms mod...
67
68
    )
    destination_addresses = TextAreaField(
35a99ac7   Goutte   Move more text co...
69
70
        label=form_content['destination_addresses']['label'],
        description=form_content['destination_addresses']['description'],
c81df6e7   Goutte   Add the forms mod...
71
72
73
        validators=[
            validators.DataRequired(),
        ],
35a99ac7   Goutte   Move more text co...
74
75
76
77
78
79
80
81
82
83
84
        render_kw={
            "placeholder": form_content['destination_addresses']['placeholder']
        },
    )
    compute_optimal_destination = BooleanField(
        label=form_content['compute_optimal_destination']['label'],
        description=form_content['compute_optimal_destination']['description'],
        default=False,
        validators=[
            validators.Optional(),
        ],
c81df6e7   Goutte   Add the forms mod...
85
    )
35a99ac7   Goutte   Move more text co...
86
87
88
    use_atmosfair_rfi = BooleanField(
        label=form_content['use_atmosfair_rfi']['label'],
        description=form_content['use_atmosfair_rfi']['description'],
c81df6e7   Goutte   Add the forms mod...
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
        default=False,
        validators=[
            validators.Optional(),
        ],
    )

    def validate(self):
        check_validate = super(EstimateForm, self).validate()

        # Do our validators pass?
        if not check_validate:
            return False

        return True


# LOGIN FORM ##################################################################

class LoginForm(Form):
    username = StringField(u'Username', validators=[validators.required()])
    password = PasswordField(u'Password', validators=[validators.optional()])

    def validate(self):
        check_validate = super(LoginForm, self).validate()

        # Do our validators pass?
        if not check_validate:
            return False

        # Does the user even exist?
        user = User.query.filter_by(username=self.username.data).first()
        if not user:
            self.username.errors.append('Invalid username or password')
            return False

        # Do the passwords match?
        if not user.check_password(self.password.data):
            self.username.errors.append('Invalid username or password')
            return False

        return True