X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=rest%2F__init__.py;h=58fec2cb70f23973f7e7c45368434e83f1708c81;hb=7871c58de1b95f8d625c26c967dd72eb9430dcab;hp=6e4edc7e98e30f260a85b8da15f603f31ef443c5;hpb=e3a8fc26ab02278db0b7593c1bd28f4973ab4d2b;p=unfold.git diff --git a/rest/__init__.py b/rest/__init__.py index 6e4edc7e..58fec2cb 100644 --- a/rest/__init__.py +++ b/rest/__init__.py @@ -13,6 +13,16 @@ from string import join import json +# handles serialization of datetime in json +DateEncoder = lambda obj: obj.strftime("%B %d, %Y %H:%M:%S") if isinstance(obj, datetime.datetime) else None + +# handles decimal numbers serialization in json +class DecimalEncoder(json.JSONEncoder): + def _iterencode(self, o, markers=None): + if isinstance(o, decimal.Decimal): + return (str(o) for o in [o]) + return super(DecimalEncoder, self)._iterencode(o, markers) + def dispatch(request, object_type, object_name): switch = { @@ -79,7 +89,7 @@ def send(request, response, object_properties): response_data['data'].append(d) - return HttpResponse(json.dumps(response_data), content_type="application/json") + return HttpResponse(json.dumps(response_data, cls=DecimalEncoder, default=DateEncoder), content_type="application/json") def error(request, object_name, object_properties): return HttpResponse(json.dumps({'error' : 'an error has occurred'}), content_type="application/json") \ No newline at end of file