Allow for multiple date formats

This commit is contained in:
richard-dds 2018-07-31 15:16:04 -04:00
parent b14c490082
commit 106b87b96e
2 changed files with 36 additions and 1 deletions

View File

@ -7,7 +7,17 @@ import pendulum
class DateField(DateField): class DateField(DateField):
def _value(self): def _value(self):
if self.data: if self.data:
return pendulum.parse(self.data).date() date_formats = [
"YYYY-MM-DD",
"MM/DD/YYYY"
]
for _format in date_formats:
try:
return pendulum.from_format(self.data, _format).date()
except (ValueError, pendulum.parsing.exceptions.ParserError):
pass
raise ValueError("Unable to parse string {}".format(self.data))
else: else:
return None return None

View File

@ -0,0 +1,25 @@
import pytest
from wtforms import Form
import pendulum
from atst.forms.fields import DateField
class MyForm(Form):
date = DateField()
def test_date_ie_format():
form = MyForm(data={"date": "12/24/2018"})
assert form.date._value() == pendulum.date(2018, 12, 24)
def test_date_sane_format():
form = MyForm(data={"date": "2018-12-24"})
assert form.date._value() == pendulum.date(2018, 12, 24)
def test_date_insane_format():
form = MyForm(data={"date": "hello"})
with pytest.raises(ValueError):
form.date._value()