Refactored form model for custom validators
This commit is contained in:
		@@ -1,9 +1,11 @@
 | 
				
			|||||||
from flask_wtf import FlaskForm
 | 
					from flask_wtf import FlaskForm
 | 
				
			||||||
from flask_wtf.file import FileField, FileRequired, FileAllowed
 | 
					from flask_wtf.file import FileField, FileRequired, FileAllowed
 | 
				
			||||||
from wtforms import StringField, PasswordField, BooleanField, DateField, SelectField
 | 
					from wtforms import StringField, PasswordField, BooleanField, DateField, SelectField, IntegerField
 | 
				
			||||||
from wtforms.validators import InputRequired, Email, Length, EqualTo, Optional
 | 
					from wtforms.validators import InputRequired, Email, Length, EqualTo, Optional
 | 
				
			||||||
from datetime import date, timedelta
 | 
					from datetime import date, timedelta
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from .validators import value
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class LoginForm(FlaskForm):
 | 
					class LoginForm(FlaskForm):
 | 
				
			||||||
    username = StringField('Username', validators=[InputRequired(), Length(min=4, max=15)])
 | 
					    username = StringField('Username', validators=[InputRequired(), Length(min=4, max=15)])
 | 
				
			||||||
    password = PasswordField('Password', validators=[InputRequired(), Length(min=6, max=30, message='The password must be between 6 and 20 characters long.')])
 | 
					    password = PasswordField('Password', validators=[InputRequired(), Length(min=6, max=30, message='The password must be between 6 and 20 characters long.')])
 | 
				
			||||||
@@ -53,4 +55,8 @@ class CreateTest(FlaskForm):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
class UploadDataForm(FlaskForm):
 | 
					class UploadDataForm(FlaskForm):
 | 
				
			||||||
    data_file = FileField('Data File', validators=[FileRequired(), FileAllowed(['json'])])
 | 
					    data_file = FileField('Data File', validators=[FileRequired(), FileAllowed(['json'])])
 | 
				
			||||||
    default = BooleanField('Make Default', render_kw={'checked': True})
 | 
					    default = BooleanField('Make Default', render_kw={'checked': True})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class AddTimeAdjustment(FlaskForm):
 | 
				
			||||||
 | 
					    time = IntegerField('Extra Time (Minutes)', validators=[InputRequired(), value(max=60)])
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
							
								
								
									
										11
									
								
								ref-test/admin/models/forms/validators.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								ref-test/admin/models/forms/validators.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
				
			|||||||
 | 
					from wtforms.validators import ValidationError
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def value(min=0, max=None):
 | 
				
			||||||
 | 
					    message = f'Value must be between {min} and {max}.'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def _length(form, field):
 | 
				
			||||||
 | 
					        value = field.data or 0
 | 
				
			||||||
 | 
					        if value < min or max != None and value > max:
 | 
				
			||||||
 | 
					            raise ValidationError(message)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return _length
 | 
				
			||||||
		Reference in New Issue
	
	Block a user