Allow Date object to provide a default and raise a Required invalid exception.
This commit is contained in:
@@ -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()
|
||||
|
@@ -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()
|
||||
|
Reference in New Issue
Block a user