summaryrefslogtreecommitdiff
path: root/megapixels/app/server/json_encoder.py
diff options
context:
space:
mode:
authorJules Laplace <julescarbon@gmail.com>2018-12-17 00:35:19 +0100
committerJules Laplace <julescarbon@gmail.com>2018-12-17 00:35:19 +0100
commit4cf8581655c34698f8869bb364b6d436b881d17a (patch)
tree449d6c5a8cd5a3f5bbd277e67f66a734ae0f51c8 /megapixels/app/server/json_encoder.py
parent0bbaef7c889f2bf17cdf7e4584a6946085d0a7eb (diff)
returning results...!
Diffstat (limited to 'megapixels/app/server/json_encoder.py')
-rw-r--r--megapixels/app/server/json_encoder.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/megapixels/app/server/json_encoder.py b/megapixels/app/server/json_encoder.py
new file mode 100644
index 00000000..89af578a
--- /dev/null
+++ b/megapixels/app/server/json_encoder.py
@@ -0,0 +1,17 @@
+from sqlalchemy.ext.declarative import DeclarativeMeta
+from flask import json
+
+class AlchemyEncoder(json.JSONEncoder):
+ def default(self, o):
+ if isinstance(o.__class__, DeclarativeMeta):
+ data = {}
+ fields = o.__json__() if hasattr(o, '__json__') else dir(o)
+ for field in [f for f in fields if not f.startswith('_') and f not in ['metadata', 'query', 'query_class']]:
+ value = o.__getattribute__(field)
+ try:
+ json.dumps(value)
+ data[field] = value
+ except TypeError:
+ data[field] = None
+ return data
+ return json.JSONEncoder.default(self, o)