fixed datetime json encoding
authorCiro Scognamiglio <ciro.scognamiglio@cslash.net>
Wed, 26 Feb 2014 15:03:21 +0000 (16:03 +0100)
committerCiro Scognamiglio <ciro.scognamiglio@cslash.net>
Wed, 26 Feb 2014 15:03:21 +0000 (16:03 +0100)
rest/__init__.py

index 58fec2c..fdcd878 100644 (file)
@@ -10,12 +10,17 @@ from manifold.core.query            import Query, AnalyzedQuery
 from manifoldapi.manifoldapi        import execute_query
 
 from string import join
+import decimal
+import datetime
 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
 
+# support converting decimal in json
+encoder.FLOAT_REPR = lambda o: format(o, '.2f')
+
 # handles decimal numbers serialization in json
 class DecimalEncoder(json.JSONEncoder):
     def _iterencode(self, o, markers=None):
@@ -54,7 +59,7 @@ def dispatch(request, object_type, object_name):
 #         return post(request, object_type, object_name)
 
 def platform(request, object_name, object_properties):
-    query  = Query().get('local:platform').filter_by('disabled', '==', '0').select(object_properties)
+    query  = Query().get('local:platform').filter_by('disabled', '==', '0').filter_by('gateway_type', '==', 'sfa').filter_by('platform', '!=', 'myslice').select(object_properties)
     return send(request, execute_query(request, query), object_properties)
 
 def slice(request, object_name, object_properties):
@@ -71,7 +76,7 @@ def user(request, object_name, object_properties):
 def send(request, response, object_properties):
     if request.path.split('/')[1] == 'rest' :
         response_data = response
-        return HttpResponse(json.dumps(response_data), content_type="application/json")
+        return HttpResponse(json.dumps(response_data, cls=DecimalEncoder, default=DateEncoder), content_type="application/json")
     elif request.path.split('/')[1] == 'table' :
         return render_to_response('table-default.html', {'data' : response, 'properties' : object_properties})
     elif request.path.split('/')[1] == 'datatable' :