From b43d095d3a9597b8f859fca6beb40c590c2f82be Mon Sep 17 00:00:00 2001 From: Drew Short Date: Thu, 4 Jul 2019 22:50:42 -0500 Subject: [PATCH] Enforce new expiration date in future --- forms.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/forms.py b/forms.py index 65aa6c1..e676f7d 100644 --- a/forms.py +++ b/forms.py @@ -4,6 +4,7 @@ from wtforms import StringField, PasswordField, IntegerField, SubmitField from wtforms.fields.html5 import DateField from wtforms.validators import DataRequired, Length, EqualTo, InputRequired, \ ValidationError, NumberRange, Optional +from datetime import date from db import get_registration_code, get_registered_user @@ -30,6 +31,11 @@ def username_availability_validator(form: FlaskForm, field): raise ValidationError("Username already registered!") +def registration_code_expiration_date_validator(form: FlaskForm, field): + if field.data <= date.today(): + raise ValidationError("Expiration Date must be in the future!") + + class RegistrationForm(FlaskForm): username = StringField( 'Username', @@ -56,7 +62,9 @@ class LoginForm(FlaskForm): class RegistrationCodeForm(FlaskForm): - expiration_time = DateField('Expiration Time', format='%Y-%m-%d', validators=[Optional()]) + expiration_time = DateField('Expiration Time', + format='%Y-%m-%d', + validators=[Optional(), registration_code_expiration_date_validator]) max_usages = IntegerField('Max Usages', validators=[NumberRange(min=1)])