mirror of https://github.com/apache/superset.git
Fix date serialization (#873)
* [panoramix] -> [dashed] * merge from caravel/master * Updated from airbnb * Cleaning * Rebase with upstream/master * merge from caravel/master * Updated from airbnb * Cleaning * Manual rebase * Last pending change to rebase * Convert date to datetime before serialization. Approach choosen: transform data before serialize and keep just one way to serialize * Unit test created * stupid error :( * remove uneeded code and rename test * Avoid double type checking Test updated note: isinstance(<datetime>, <date>) == True, check order changed * Increase coverage * Fix assertRaises
This commit is contained in:
parent
2bfb9cc7dd
commit
198226a39f
|
@ -4,7 +4,7 @@ from __future__ import division
|
|||
from __future__ import print_function
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from datetime import datetime
|
||||
from datetime import datetime, date
|
||||
import decimal
|
||||
import functools
|
||||
import json
|
||||
|
@ -318,6 +318,8 @@ def json_int_dttm_ser(obj):
|
|||
return val
|
||||
if isinstance(obj, datetime):
|
||||
obj = (obj - EPOCH).total_seconds() * 1000
|
||||
elif isinstance(obj, date):
|
||||
obj = (obj - EPOCH.date()).total_seconds() * 1000
|
||||
else:
|
||||
raise TypeError(
|
||||
"Unserializable object {} of type {}".format(obj, type(obj))
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
from datetime import datetime, date, timedelta
|
||||
from caravel import utils
|
||||
import unittest
|
||||
|
||||
|
||||
class UtilsTestCase(unittest.TestCase):
|
||||
def test_json_int_dttm_ser(self):
|
||||
today = date.today()
|
||||
now = datetime.now()
|
||||
ms = utils.json_int_dttm_ser(today)
|
||||
deser = (utils.EPOCH + timedelta(milliseconds=ms)).date()
|
||||
assert today == deser, "Serialization error: %s is not %s" % (str(today), str(deser))
|
||||
ms = utils.json_int_dttm_ser(now)
|
||||
deser = (utils.EPOCH + timedelta(milliseconds=ms))
|
||||
assert now == deser, "Serialization error: %s is not %s" % (str(now), str(deser))
|
||||
|
||||
with self.assertRaises(TypeError):
|
||||
utils.json_int_dttm_ser("this is not a date")
|
||||
|
Loading…
Reference in New Issue