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):
|
if auditlog.contains(model._meta.model):
|
||||||
model_fields = auditlog.get_model_fields(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 = {}
|
changes_display_dict = {}
|
||||||
# grab the changes_dict and iterate through
|
# 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 to get the field attribute on the model
|
||||||
try:
|
try:
|
||||||
field = model._meta.get_field(field_name)
|
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):
|
class SimpleMaskedFieldsModelTest(TestCase):
|
||||||
"""Log masked changes for fields in mask_fields"""
|
"""Log masked changes for fields in mask_fields"""
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue