Skip to content

Commit bbbfc25

Browse files
committed
chors: implement _has_content_changes in elody config
1 parent 7cf753f commit bbbfc25

File tree

1 file changed

+54
-1
lines changed

1 file changed

+54
-1
lines changed

src/elody/object_configurations/elody_configuration.py

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)