Merge 9525da85acb856be1d4957a5ff9560ba969768d0 into ec3052c0aea48996230af716b5ed9161a1cc9a66

This commit is contained in:
Kyle J. Roux 2017-05-20 05:24:12 +00:00 committed by GitHub
commit 469bcf7a4b
2 changed files with 61 additions and 62 deletions

2
.gitignore vendored
View File

@ -1 +1,3 @@
database.sqlite
*.pyc
.env

View File

@ -1,19 +1,44 @@
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()
Email(),
Length(1, 254, 'Too long.'),
]
)
class PasswordConfirmFieldMixin(Form):
"""
mixin class to provide extra password field
"""
password_confirm = PasswordField('Repeat password')
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=[
@ -21,8 +46,12 @@ class LoginForm(FlaskForm):
]
)
class LoginForm(FlaskForm, EmailFieldMixin, PasswordFieldMixin):
'''
Form Login
'''
class SignupForm(FlaskForm):
class SignupForm(FlaskForm, EmailFieldMixin, PasswordConfirmFieldMixin, PasswordFieldMixin):
'''
Form signup
'''
@ -30,63 +59,31 @@ 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):
class ResetPasswordForm(FlaskForm,PasswordConfirmFieldMixin):
'''
Form update password
'''
password = PasswordField(
'Password',
validators=[
DataRequired(),
EqualTo(
'password_confirm',
'Passwords are not the same.'
)
]
)
password_confirm = PasswordField('Repeat password')