Merge pull request #301 from dod-ccpo/validate-dates

Validate that start_date is in the future
This commit is contained in:
richard-dds 2018-09-19 10:03:57 -04:00 committed by GitHub
commit fc20d75d31
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 25 additions and 5 deletions

View File

@ -1,7 +1,7 @@
import pendulum
from wtforms.fields.html5 import DateField, EmailField, IntegerField, TelField
from wtforms.fields import BooleanField, RadioField, StringField, TextAreaField
from wtforms.validators import Email, Length, Optional, Required
from wtforms.validators import Email, Length, Optional, Required, DataRequired
from .fields import SelectField
from .forms import ValidatedForm
@ -136,7 +136,14 @@ class DetailsOfUseForm(ValidatedForm):
start_date = DateField(
description="When do you expect to start using the JEDI Cloud (not for billing purposes)?",
validators=[Required()],
validators=[
DataRequired(),
DateRange(
lower_bound=pendulum.duration(days=1),
upper_bound=None,
message="Must be a date in the future.",
),
],
format="%m/%d/%Y",
)

View File

@ -1,12 +1,17 @@
import re
from wtforms.validators import ValidationError
import pendulum
from datetime import datetime
def DateRange(lower_bound=None, upper_bound=None, message=None):
def _date_range(form, field):
now = pendulum.now().date()
date = field.data
if isinstance(field.data, str):
date = datetime.strptime(field.data, field.format)
else:
date = field.data
if lower_bound is not None:
if (now - lower_bound) > date:

View File

@ -114,7 +114,7 @@ class RequestFactory(Base):
fname_poc=user.first_name,
lname_poc=user.last_name,
jedi_usage="adf",
start_date=datetime.date(2018, 8, 8),
start_date=datetime.date(2050, 1, 1),
cloud_native="yes",
dollar_value=dollar_value,
dod_component=SERVICE_BRANCHES[2][1],

View File

@ -13,7 +13,7 @@ class TestDetailsOfUseForm:
"dollar_value": "42",
"number_user_sessions": "6",
"average_daily_traffic": "0",
"start_date": "12/12/2012",
"start_date": "12/12/2050",
}
migration_data = {
"jedi_migration": "yes",
@ -87,3 +87,11 @@ class TestDetailsOfUseForm:
request_form = DetailsOfUseForm(data=data)
assert request_form.validate()
def test_start_date_must_be_in_the_future(self):
data = {**self.form_data, **self.migration_data}
data["start_date"] = "01/01/2018"
request_form = DetailsOfUseForm(data=data)
assert not request_form.validate()
assert "Must be a date in the future." in request_form.errors["start_date"]