Allow None as 'default_tzinfo' of DateTime.

This allows us to use DateTime without a timezone info entirely.
This commit is contained in:
Daniel Nouri
2011-03-30 01:27:40 +02:00
parent 9692e1536f
commit 0ad9f28e59
2 changed files with 17 additions and 2 deletions

View File

@@ -1091,8 +1091,8 @@ class DateTime(SchemaType):
""" """
err_template = _('Invalid date') err_template = _('Invalid date')
def __init__(self, default_tzinfo=None): def __init__(self, default_tzinfo=_marker):
if default_tzinfo is None: if default_tzinfo is _marker:
default_tzinfo = iso8601.iso8601.Utc() default_tzinfo = iso8601.iso8601.Utc()
self.default_tzinfo = default_tzinfo self.default_tzinfo = default_tzinfo

View File

@@ -1258,6 +1258,13 @@ class TestDateTime(unittest.TestCase):
expected = dt.replace(tzinfo=typ.default_tzinfo).isoformat() expected = dt.replace(tzinfo=typ.default_tzinfo).isoformat()
self.assertEqual(result, expected) self.assertEqual(result, expected)
def test_serialize_with_none_tzinfo_naive_datetime(self):
typ = self._makeOne(default_tzinfo=None)
node = DummySchemaNode(None)
dt = self._dt()
result = typ.serialize(node, dt)
self.assertEqual(result, dt.isoformat())
def test_serialize_with_tzware_datetime(self): def test_serialize_with_tzware_datetime(self):
import iso8601 import iso8601
typ = self._makeOne() typ = self._makeOne()
@@ -1324,6 +1331,14 @@ class TestDateTime(unittest.TestCase):
result = typ.deserialize(node, iso) result = typ.deserialize(node, iso)
self.assertEqual(result.isoformat(), dt_with_tz.isoformat()) self.assertEqual(result.isoformat(), dt_with_tz.isoformat())
def test_deserialize_none_tzinfo(self):
typ = self._makeOne(default_tzinfo=None)
dt = self._dt()
iso = dt.isoformat()
node = DummySchemaNode(None)
result = typ.deserialize(node, iso)
self.assertEqual(result.isoformat(), dt.isoformat())
class TestDate(unittest.TestCase): class TestDate(unittest.TestCase):
def _makeOne(self, *arg, **kw): def _makeOne(self, *arg, **kw):
from colander import Date from colander import Date