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)
def clean(self, value): value = super(MoneyField, self).clean(value) return sanitize_separators(value) or None