diff options
author | Julien Danjou <julien@danjou.info> | 2015-03-23 15:47:05 +0100 |
---|---|---|
committer | Julien Danjou <julien@danjou.info> | 2015-05-13 12:11:12 +0200 |
commit | 5b0827a3df584b3e26bb44e5358cc28ac4a91636 (patch) | |
tree | 67c1d8e32dfd11d8b07a139ebbfd23982180e679 | |
parent | 42b355f10dd011161e6d859f4a2f99030cc4213a (diff) | |
download | oslo-serialization-5b0827a3df584b3e26bb44e5358cc28ac4a91636.tar.gz |
jsonutils: replace strtime() usage with isoformat()
Following discussion in change I8b5119e64369ccac3423dccc04421f99912df733
in oslo.utils, we plan to deprecated and remove strtime() which is to be
considered dangerous.
This changes the json serialization code to embed the timezone in the
encoded datetime string if it's available.
Change-Id: I262391987d25b483d2bec4ac3abe94b6e9d032ad
-rw-r--r-- | oslo_serialization/jsonutils.py | 5 | ||||
-rw-r--r-- | oslo_serialization/tests/test_jsonutils.py | 9 | ||||
-rw-r--r-- | tests/test_jsonutils.py | 2 |
3 files changed, 11 insertions, 5 deletions
diff --git a/oslo_serialization/jsonutils.py b/oslo_serialization/jsonutils.py index eca6eb2..f2d7f1a 100644 --- a/oslo_serialization/jsonutils.py +++ b/oslo_serialization/jsonutils.py @@ -57,7 +57,6 @@ else: from oslo_utils import encodeutils from oslo_utils import importutils -from oslo_utils import timeutils import six import six.moves.xmlrpc_client as xmlrpclib @@ -105,7 +104,7 @@ def to_primitive(value, convert_instances=False, convert_datetime=True, if isinstance(value, datetime.datetime): if convert_datetime: - return timeutils.strtime(value) + return value.isoformat() else: return value @@ -146,7 +145,7 @@ def to_primitive(value, convert_instances=False, convert_datetime=True, value = datetime.datetime(*tuple(value.timetuple())[:6]) if convert_datetime and isinstance(value, datetime.datetime): - return timeutils.strtime(value) + return value.isoformat() elif hasattr(value, 'iteritems'): return recursive(dict(value.iteritems()), level=level + 1) elif hasattr(value, '__iter__'): diff --git a/oslo_serialization/tests/test_jsonutils.py b/oslo_serialization/tests/test_jsonutils.py index 9709cb6..18bdc36 100644 --- a/oslo_serialization/tests/test_jsonutils.py +++ b/oslo_serialization/tests/test_jsonutils.py @@ -17,6 +17,7 @@ import collections import datetime import json +import iso8601 import mock import netaddr from oslo_i18n import fixture @@ -135,6 +136,12 @@ class ToPrimitiveTestCase(test_base.BaseTestCase): self.assertEqual(jsonutils.to_primitive(x), '1920-02-03T04:05:06.000007') + def test_datetime_timezone(self): + x = datetime.datetime(1920, 2, 3, 4, 5, 6, 7, + tzinfo=iso8601.iso8601.UTC) + self.assertEqual(jsonutils.to_primitive(x), + '1920-02-03T04:05:06.000007+00:00') + def test_datetime_preserve(self): x = datetime.datetime(1920, 2, 3, 4, 5, 6, 7) self.assertEqual(jsonutils.to_primitive(x, convert_datetime=False), x) @@ -143,7 +150,7 @@ class ToPrimitiveTestCase(test_base.BaseTestCase): x = xmlrpclib.DateTime() x.decode("19710203T04:05:06") self.assertEqual(jsonutils.to_primitive(x), - '1971-02-03T04:05:06.000000') + '1971-02-03T04:05:06') def test_iter(self): class IterClass(object): diff --git a/tests/test_jsonutils.py b/tests/test_jsonutils.py index e41b66e..e9567df 100644 --- a/tests/test_jsonutils.py +++ b/tests/test_jsonutils.py @@ -161,7 +161,7 @@ class ToPrimitiveTestCase(test_base.BaseTestCase): x = xmlrpclib.DateTime() x.decode("19710203T04:05:06") self.assertEqual(jsonutils.to_primitive(x), - '1971-02-03T04:05:06.000000') + '1971-02-03T04:05:06') def test_iter(self): class IterClass(object): |