def default(self, obj):
     if isinstance(obj, decimal.Decimal):
         return float(obj) if obj else None
     elif isinstance(obj, Money):
         return float(sanitize_separators(str(obj))) if obj else None
     elif isinstance(obj, datetime.datetime):
         return obj.strftime('%Y-%m-%d %H:%M:%S') if obj else None
     elif isinstance(obj, datetime.date):
         return obj.strftime('%Y-%m-%d') if obj else None
     elif isinstance(obj, datetime.time):
         return obj.strftime('%H:%M:%S') if obj else None
     elif obj.__class__.__name__ == 'ObjectId':
         return str(obj)
     elif callable(obj):
         obj = obj()
         if isinstance(obj, Promise):
             obj = unicode(obj)
         return obj
     return super(CustomJSONEncoder, self).default(obj)
Beispiel #2
0
 def clean(self, value):
     value = super(MoneyField, self).clean(value)
     return sanitize_separators(value) or None