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