Allow Date object to provide a default and raise a Required invalid exception.

This commit is contained in:
Chris McDonough
2010-04-09 09:49:19 +00:00
parent 4ae8fd6b84
commit 5b67e6e9c9
2 changed files with 19 additions and 0 deletions

View File

@@ -929,6 +929,10 @@ class Date(object):
return value.isoformat()
def deserialize(self, node, value):
if not value:
if node.required:
raise Invalid(node, 'Required')
return node.default
try:
result = iso8601.parse_date(value)
result = result.date()

View File

@@ -1125,6 +1125,21 @@ class TestDate(unittest.TestCase):
e = invalid_exc(typ.deserialize, node, '10-10-10-10')
self.failUnless('cannot be parsed' in e.msg)
def test_deserialize_empty_required(self):
node = DummySchemaNode(None)
typ = self._makeOne()
e = invalid_exc(typ.deserialize, node, '')
self.failUnless('Required' in e.msg)
def test_deserialize_empty_notrequired(self):
import datetime
node = DummySchemaNode(None)
node.default = 'abc'
node.required = False
typ = self._makeOne()
result = typ.deserialize(node, None)
self.assertEqual(result, 'abc')
def test_deserialize_success_date(self):
import datetime
typ = self._makeOne()