Allow for multiple date formats
This commit is contained in:
parent
b14c490082
commit
106b87b96e
@ -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
|
||||||
|
|
||||||
|
25
tests/forms/test_fields.py
Normal file
25
tests/forms/test_fields.py
Normal 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()
|
Loading…
x
Reference in New Issue
Block a user