mirror of
https://github.com/jazzband/django-auditlog.git
synced 2026-03-16 22:20:26 +00:00
added fixes for changes_display_dict when AUDITLOG_STORE_JSON_CHANGES is True (#738)
This commit is contained in:
parent
0eff3e8404
commit
d4d9f287a6
2 changed files with 60 additions and 1 deletions
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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"""
|
||||
|
|
|
|||
Loading…
Reference in a new issue