From 86115cff6cf82e61cee7897e82b4dd29cb62dd2f Mon Sep 17 00:00:00 2001 From: Akshay Joshi Date: Fri, 5 Feb 2016 14:18:35 +0530 Subject: [PATCH] Adding support to serialize the datetime to the JSON object properly. --- web/pgadmin/utils/ajax.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/web/pgadmin/utils/ajax.py b/web/pgadmin/utils/ajax.py index ce9f2dcd0..95e2933f5 100644 --- a/web/pgadmin/utils/ajax.py +++ b/web/pgadmin/utils/ajax.py @@ -12,6 +12,18 @@ from flask import Response from flask.ext.babel import gettext as _ import simplejson as json +import datetime +import decimal + + +class DataTypeJSONEncoder(json.JSONEncoder): + def default(self, obj): + if isinstance(obj, datetime.datetime): + return obj.isoformat() + if isinstance(obj, decimal.Decimal): + return float(obj) + + return json.JSONEncoder.default(self, obj) def make_json_response(success=1, errormsg='', info='', result=None, @@ -26,7 +38,7 @@ def make_json_response(success=1, errormsg='', info='', result=None, doc['data'] = data return Response( - response=json.dumps(doc), + response=json.dumps(doc, cls=DataTypeJSONEncoder), status=status, mimetype="text/json" ) @@ -35,7 +47,7 @@ def make_json_response(success=1, errormsg='', info='', result=None, def make_response(response=None, status=200): """Create a JSON response handled by the backbone models.""" return Response( - response=json.dumps(response), + response=json.dumps(response, cls=DataTypeJSONEncoder), status=status, mimetype="text/json" )