additions for base fields

This commit is contained in:
Kyle Roux 2017-05-19 17:50:09 -07:00
parent c7d3b5c3e8
commit 76c77a6b12

102
forms.py
View File

@ -1,28 +1,49 @@
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, BooleanField
from wtforms import StringField, PasswordField, BooleanField, Form
from wtforms.validators import DataRequired, Email, Length, EqualTo
class LoginForm(FlaskForm):
'''
Form Login
'''
class EmailFieldMixin(Form):
"""
mixin class to provide email field to forms
"""
email = StringField(
'Email',
validators=[
DataRequired(),
Email()
]
)
]
)
class PasswordFieldMixin(Form):
"""
mixin class to provide password field
"""
def __init__(self, *args, **kwargs):
super(PasswordFieldMixin, self).__init__(*args, **kwargs)
password_field = self._fields.pop('password')
self._fields['password'] = password_field
if 'password_confirm' in self._fields:
self._fields['password'].validators.append(
EqualTo(
'password_confirm',
'Passwords are not the same.'
)
)
confirm_password_field = self._fields.pop('password_confirm')
self._fields['password_confirm'] = confirm_password_field
password = PasswordField(
'Password',
validators=[
DataRequired()
]
)
]
)
class LoginForm(FlaskForm, EmailFieldMixin, PasswordFieldMixin):
'''
Form Login
'''
class SignupForm(FlaskForm):
class SignupForm(FlaskForm, EmailFieldMixin, PasswordFieldMixin):
'''
Form signup
'''
@ -30,63 +51,32 @@ class SignupForm(FlaskForm):
'Username',
validators=[
DataRequired(),
Length(5, 30, '''
You can not have less than 5 characters or more 30.
''')
]
)
email = StringField(
'Email',
validators=[
DataRequired(),
Email(),
Length(1, 254, 'Too long.')
]
)
password = PasswordField(
'Password',
validators=[
DataRequired(),
EqualTo(
'password_confirm',
'Passwords are not the same.'
)
]
)
Length(
5, # min
30, # max
'You can not have less than 5 characters or more 30.' # error message
)
]
)
password_confirm = PasswordField('Repeat password')
accept_tos = BooleanField(
'I accept the terms and conditions.',
validators=[
DataRequired('Please accept the terms and conditions.')
]
)
]
)
def __init__(self, *args, **kwargs):
super(SignupForm, self).__init__(*args, **kwargs)
tos = self._fields.pop('accept_tos')
self._fields['accept_tos'] = tos
class EmailResetPasswordForm(FlaskForm):
class EmailResetPasswordForm(FlaskForm, EmailFieldMixin):
'''
Form send email reset password
'''
email = StringField(
'Email',
validators=[
DataRequired(),
Email()
]
)
class ResetPasswordForm(FlaskForm):
'''
Form update password
'''
password = PasswordField(
'Password',
validators=[
DataRequired(),
EqualTo(
'password_confirm',
'Passwords are not the same.'
)
]
)
password_confirm = PasswordField('Repeat password')