additions for base fields
This commit is contained in:
		
							
								
								
									
										84
									
								
								forms.py
									
									
									
									
									
								
							
							
						
						
									
										84
									
								
								forms.py
									
									
									
									
									
								
							| @@ -1,12 +1,11 @@ | ||||
| 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=[ | ||||
| @@ -14,6 +13,24 @@ class LoginForm(FlaskForm): | ||||
|             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=[ | ||||
| @@ -21,8 +38,12 @@ class LoginForm(FlaskForm): | ||||
|         ] | ||||
|     ) | ||||
|  | ||||
| class LoginForm(FlaskForm, EmailFieldMixin, PasswordFieldMixin): | ||||
|     ''' | ||||
|     Form Login | ||||
|     ''' | ||||
|      | ||||
| class SignupForm(FlaskForm): | ||||
| class SignupForm(FlaskForm, EmailFieldMixin, PasswordFieldMixin): | ||||
|     ''' | ||||
|     Form signup | ||||
|     ''' | ||||
| @@ -30,26 +51,10 @@ 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 | ||||
|             ) | ||||
|         ] | ||||
|     )     | ||||
| @@ -60,33 +65,18 @@ class SignupForm(FlaskForm): | ||||
|             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') | ||||
|   | ||||
		Reference in New Issue
	
	Block a user