From 23841bbbf1d7c3f6bbc34ae70fdb09e79c424a9a Mon Sep 17 00:00:00 2001
From: Alessandro Cerioni <acerioni@grandlyon.com>
Date: Sat, 9 Mar 2019 11:39:38 +0100
Subject: [PATCH] Adding utils/serializers.py

---
 utils/serializers.py | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)
 create mode 100644 utils/serializers.py

diff --git a/utils/serializers.py b/utils/serializers.py
new file mode 100644
index 0000000..04de436
--- /dev/null
+++ b/utils/serializers.py
@@ -0,0 +1,21 @@
+import datetime
+
+# cf. https://stackoverflow.com/questions/30313243/messagepack-and-datetime
+def decode_datetime(obj):
+    if '__datetime__' in obj.keys():
+        obj = datetime.datetime.strptime(obj["as_str"], "%Y%m%dT%H:%M:%S.%f")
+    elif '__date__' in obj.keys():
+        obj = datetime.datetime.strptime(obj["as_str"], "%Y%m%d")
+    else:
+        return obj
+
+# cf. https://stackoverflow.com/questions/30313243/messagepack-and-datetime
+def encode_datetime(obj):
+    if isinstance(obj, datetime.datetime):
+        return {'__datetime__': True, 'as_str': obj.strftime("%Y%m%dT%H:%M:%S.%f")}
+
+    if isinstance(obj, datetime.date):
+        return {'__date__': True, 'as_str': obj.strftime("%Y%m%d")}
+    # if isinstance(obj, Decimal):
+    #     return float(obj)
+    return obj
-- 
GitLab