Milimetric has uploaded a new change for review.
https://gerrit.wikimedia.org/r/74644
Change subject: decimal json fix
......................................................................
decimal json fix
Change-Id: Ib060ed9c970f18431272941e886b3dced577dc33
---
M wikimetrics/utils.py
1 file changed, 9 insertions(+), 5 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/analytics/wikimetrics
refs/changes/44/74644/1
diff --git a/wikimetrics/utils.py b/wikimetrics/utils.py
index 7c58822..e3ec69a 100644
--- a/wikimetrics/utils.py
+++ b/wikimetrics/utils.py
@@ -1,5 +1,6 @@
import json
import datetime
+import decimal
from time import mktime
from flask import Response
@@ -8,9 +9,9 @@
"""
Handles returning generic arguments as json in a Flask application.
Takes care of the following custom encoding duties:
- * datetime.datetime objects encoded via DateTimeCapableEncoder
+ * datetime.datetime objects encoded via BetterEncoder
"""
- data = json.dumps(dict(*args, **kwargs), cls=DateTimeCapableEncoder,
indent=4)
+ data = json.dumps(dict(*args, **kwargs), cls=BetterEncoder, indent=4)
return Response(data, mimetype='application/json')
@@ -30,19 +31,22 @@
return json_response(isRedirect=True, redirectTo=url)
-class DateTimeCapableEncoder(json.JSONEncoder):
+class BetterEncoder(json.JSONEncoder):
"""
Date/Time objects are not serializable by the built-in
json library because there is no agreed upon standard of how to do so
This class can be used as follows to allow your json.dumps to serialize
dates properly.
You should make sure your client is happy with this serialization:
- print json.dumps(obj, cls=DateTimeCapableEncoder)
+ print json.dumps(obj, cls=BetterEncoder)
"""
def default(self, obj):
if isinstance(obj, datetime.datetime):
return int(mktime(obj.timetuple()))
-
+
+ if isinstance(obj, decimal.Decimal):
+ return float(obj)
+
return json.JSONEncoder.default(self, obj)
--
To view, visit https://gerrit.wikimedia.org/r/74644
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib060ed9c970f18431272941e886b3dced577dc33
Gerrit-PatchSet: 1
Gerrit-Project: analytics/wikimetrics
Gerrit-Branch: master
Gerrit-Owner: Milimetric <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits