diff --git a/utils/serializers.py b/utils/serializers.py new file mode 100644 index 0000000000000000000000000000000000000000..04de436f74e9a166783440f5cee5488f9d7b1b62 --- /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