1414 get_current_user
1515from easyaudit .models import CRUDEvent
1616from easyaudit .settings import REGISTERED_CLASSES , UNREGISTERED_CLASSES , \
17- WATCH_MODEL_EVENTS , CRUD_DIFFERENCE_CALLBACKS
17+ WATCH_MODEL_EVENTS , CRUD_DIFFERENCE_CALLBACKS ,\
18+ CRUD_OBJECT_JSON_REPR_SERIALIZER_OVERRIDE , CRUD_OBJECT_MODEL_DELTA_CALLBACK
1819from easyaudit .utils import model_delta
1920
2021logger = logging .getLogger (__name__ )
@@ -53,7 +54,10 @@ def pre_save(sender, instance, raw, using, update_fields, **kwargs):
5354 if not should_audit (instance ):
5455 return False
5556 try :
56- object_json_repr = serializers .serialize ("json" , [instance ])
57+ if CRUD_OBJECT_JSON_REPR_SERIALIZER_OVERRIDE != None :
58+ object_json_repr = CRUD_OBJECT_JSON_REPR_SERIALIZER_OVERRIDE (instance )
59+ else :
60+ object_json_repr = serializers .serialize ("json" , [instance ])
5761 except Exception :
5862 # We need a better way for this to work. ManyToMany will fail on pre_save on create
5963 return None
@@ -67,6 +71,8 @@ def pre_save(sender, instance, raw, using, update_fields, **kwargs):
6771 if not created :
6872 old_model = sender .objects .get (pk = instance .pk )
6973 delta = model_delta (old_model , instance )
74+ if CRUD_OBJECT_MODEL_DELTA_CALLBACK != None :
75+ delta = CRUD_OBJECT_MODEL_DELTA_CALLBACK (old_model , instance , delta )
7076 changed_fields = json .dumps (delta )
7177 event_type = CRUDEvent .UPDATE
7278
@@ -122,7 +128,11 @@ def post_save(sender, instance, created, raw, using, update_fields, **kwargs):
122128 with transaction .atomic ():
123129 if not should_audit (instance ):
124130 return False
125- object_json_repr = serializers .serialize ("json" , [instance ])
131+
132+ if CRUD_OBJECT_JSON_REPR_SERIALIZER_OVERRIDE != None :
133+ object_json_repr = CRUD_OBJECT_JSON_REPR_SERIALIZER_OVERRIDE (instance )
134+ else :
135+ object_json_repr = serializers .serialize ("json" , [instance ])
126136
127137 # created or updated?
128138 if created :
0 commit comments