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()
|
return value.isoformat()
|
||||||
|
|
||||||
def deserialize(self, node, value):
|
def deserialize(self, node, value):
|
||||||
|
if not value:
|
||||||
|
if node.required:
|
||||||
|
raise Invalid(node, 'Required')
|
||||||
|
return node.default
|
||||||
try:
|
try:
|
||||||
result = iso8601.parse_date(value)
|
result = iso8601.parse_date(value)
|
||||||
result = result.date()
|
result = result.date()
|
||||||
|
@@ -1125,6 +1125,21 @@ class TestDate(unittest.TestCase):
|
|||||||
e = invalid_exc(typ.deserialize, node, '10-10-10-10')
|
e = invalid_exc(typ.deserialize, node, '10-10-10-10')
|
||||||
self.failUnless('cannot be parsed' in e.msg)
|
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):
|
def test_deserialize_success_date(self):
|
||||||
import datetime
|
import datetime
|
||||||
typ = self._makeOne()
|
typ = self._makeOne()
|
||||||
|
Reference in New Issue
Block a user