diff --git a/superset/views.py b/superset/views.py index cf06776c98..155570b014 100755 --- a/superset/views.py +++ b/superset/views.py @@ -5,7 +5,6 @@ from __future__ import unicode_literals from datetime import datetime, timedelta import json -import simplejson import logging import pickle import re @@ -1405,8 +1404,7 @@ class Superset(BaseSupersetView): status = 500 return Response( - simplejson.dumps( - payload, default=utils.json_int_dttm_ser, ignore_nan=True), + viz_obj.json_dumps(payload), status=status, mimetype="application/json") diff --git a/superset/viz.py b/superset/viz.py index 677f57a74d..611555997d 100755 --- a/superset/viz.py +++ b/superset/viz.py @@ -379,10 +379,7 @@ class BaseViz(object): payload['cached_dttm'] = datetime.now().isoformat().split('.')[0] logging.info("Caching for the next {} seconds".format( cache_timeout)) - data = json.dumps( - payload, - default=utils.json_int_dttm_ser, ignore_nan=True - ) + data = self.json_dumps(payload) if PY3: data = bytes(data, 'utf-8') try: @@ -399,6 +396,9 @@ class BaseViz(object): payload['is_cached'] = is_cached return payload + def json_dumps(self, obj): + return json.dumps(obj, default=utils.json_int_dttm_ser, ignore_nan=True) + @property def data(self): """This is the data object serialized to the js layer""" @@ -538,6 +538,9 @@ class TableViz(BaseViz): columns=list(df.columns), ) + def json_dumps(self, obj): + return json.dumps(obj, default=utils.json_iso_dttm_ser) + class PivotTableViz(BaseViz):