@@ -125,6 +125,33 @@ def _document_content_patcher(self, *, document, content, overwrite=False, **_):
125125
126126 return document
127127
128+ def _has_content_changes (self , * , document , unpatched_document , ** _ ):
129+ unpatched_document = self ._sanitize_document (
130+ document = unpatched_document ,
131+ object_list_name = "metadata" ,
132+ object_list_value_field_name = "value" ,
133+ remove_audit_info = True ,
134+ )
135+ unpatched_document = self ._sanitize_document (
136+ document = unpatched_document ,
137+ object_list_name = "metadata" ,
138+ object_list_value_field_name = "value" ,
139+ remove_audit_info = True ,
140+ )
141+ document = self ._sanitize_document (
142+ document = document ,
143+ object_list_name = "relations" ,
144+ object_list_value_field_name = "key" ,
145+ remove_audit_info = True ,
146+ )
147+ document = self ._sanitize_document (
148+ document = document ,
149+ object_list_name = "relations" ,
150+ object_list_value_field_name = "key" ,
151+ remove_audit_info = True ,
152+ )
153+ return document != unpatched_document
154+
128155 def _post_crud_hook (self , ** kwargs ):
129156 pass
130157
@@ -150,9 +177,34 @@ def _pre_crud_hook(
150177 return document
151178
152179 def _sanitize_document (
153- self , * , document , object_list_name , object_list_value_field_name , ** kwargs
180+ self ,
181+ * ,
182+ document ,
183+ object_list_name ,
184+ object_list_value_field_name ,
185+ remove_audit_info = False ,
186+ ** kwargs ,
154187 ):
155188 sanitized_document = super ()._sanitize_document (document = document , ** kwargs )
189+ if remove_audit_info :
190+ for key in [
191+ "date_created" ,
192+ "date_updated" ,
193+ "date_deleted" ,
194+ "date_created_by_service" ,
195+ "date_updated_by_service" ,
196+ "date_deleted_by_service" ,
197+ "created_by" ,
198+ "updated_by" ,
199+ "deleted_by" ,
200+ "created_by_service" ,
201+ "updated_by_service" ,
202+ "deleted_by_service" ,
203+ "last_editor" ,
204+ "document_version" ,
205+ ]:
206+ sanitized_document .pop (key , None )
207+
156208 for element in document .get (object_list_name , []):
157209 if not element .get (object_list_value_field_name ):
158210 sanitized_document [object_list_name ].remove (element )
@@ -165,6 +217,7 @@ def _sanitize_document(
165217 for key , value in deepcopy (element ).items ():
166218 if not value :
167219 del element [key ]
220+
168221 return sanitized_document
169222
170223 def __patch_document_audit_info (self , crud , document , timestamp , audit_override ):
0 commit comments