added fixes for changes_display_dict when AUDITLOG_STORE_JSON_CHANGES is True (#738)

This commit is contained in:
The Alchemist 2025-07-22 17:19:40 -04:00 committed by GitHub
parent 0eff3e8404
commit d4d9f287a6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 60 additions and 1 deletions

View file

@ -455,9 +455,17 @@ class LogEntry(models.Model):
if auditlog.contains(model._meta.model):
model_fields = auditlog.get_model_fields(model._meta.model)
if settings.AUDITLOG_STORE_JSON_CHANGES:
changes_dict = {}
for field_name, values in self.changes_dict.items():
values_as_strings = [str(v) for v in values]
changes_dict[field_name] = values_as_strings
else:
changes_dict = self.changes_dict
changes_display_dict = {}
# grab the changes_dict and iterate through
for field_name, values in self.changes_dict.items():
for field_name, values in changes_dict.items():
# try to get the field attribute on the model
try:
field = model._meta.get_field(field_name)

View file

@ -798,6 +798,57 @@ class SimpleMappingModelTest(TestCase):
),
)
@override_settings(AUDITLOG_STORE_JSON_CHANGES=True)
def test_changes_display_dict_with_json_changes_and_simplemodel(self):
sm = SimpleModel(integer=37, text="my simple model instance")
sm.save()
self.assertEqual(
sm.history.latest().changes_display_dict["integer"][1],
"37",
)
self.assertEqual(
sm.history.latest().changes_display_dict["text"][1],
"my simple model instance",
)
@override_settings(AUDITLOG_STORE_JSON_CHANGES=True)
def test_register_mapping_fields_with_json_changes(self):
smm = SimpleMappingModel(
sku="ASD301301A6", vtxt="2.1.5", not_mapped="Not mapped"
)
smm.save()
self.assertEqual(
smm.history.latest().changes_dict["sku"][1],
"ASD301301A6",
msg="The diff function retains 'sku' and can be retrieved.",
)
self.assertEqual(
smm.history.latest().changes_dict["not_mapped"][1],
"Not mapped",
msg="The diff function does not map 'not_mapped' and can be retrieved.",
)
self.assertEqual(
smm.history.latest().changes_display_dict["Product No."][1],
"ASD301301A6",
msg="The diff function maps 'sku' as 'Product No.' and can be retrieved.",
)
self.assertEqual(
smm.history.latest().changes_display_dict["Version"][1],
"2.1.5",
msg=(
"The diff function maps 'vtxt' as 'Version' through verbose_name"
" setting on the model field and can be retrieved."
),
)
self.assertEqual(
smm.history.latest().changes_display_dict["not mapped"][1],
"Not mapped",
msg=(
"The diff function uses the django default verbose name for 'not_mapped'"
" and can be retrieved."
),
)
class SimpleMaskedFieldsModelTest(TestCase):
"""Log masked changes for fields in mask_fields"""