mirror of
https://github.com/jazzband/django-auditlog.git
synced 2026-03-16 22:20:26 +00:00
Attempt to change LogEntry.changes encoder to make 's usage okay
This commit is contained in:
parent
ac720cd30e
commit
e46738b75c
2 changed files with 18 additions and 1 deletions
16
auditlog/encoder.py
Normal file
16
auditlog/encoder.py
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
from django.core.serializers.json import DjangoJSONEncoder
|
||||
|
||||
from decimal import Decimal
|
||||
|
||||
AUDITLOG_BUGGY_REPR_DATATYPES = (Decimal,)
|
||||
|
||||
|
||||
class AuditLogChangesJSONEncoder(DjangoJSONEncoder):
|
||||
def default(self, obj):
|
||||
if isinstance(obj, list) and obj:
|
||||
return [
|
||||
str(o) if isinstance(o, AUDITLOG_BUGGY_REPR_DATATYPES) else o
|
||||
for o in obj
|
||||
]
|
||||
|
||||
return super().default(obj)
|
||||
|
|
@ -24,6 +24,7 @@ from django.utils.encoding import smart_str
|
|||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from auditlog.diff import mask_str
|
||||
from auditlog.encoder import AuditLogChangesJSONEncoder
|
||||
|
||||
DEFAULT_OBJECT_REPR = "<error forming object repr>"
|
||||
|
||||
|
|
@ -350,7 +351,7 @@ class LogEntry(models.Model):
|
|||
choices=Action.choices, verbose_name=_("action"), db_index=True
|
||||
)
|
||||
changes_text = models.TextField(blank=True, verbose_name=_("change message"))
|
||||
changes = models.JSONField(null=True, verbose_name=_("change message"))
|
||||
changes = models.JSONField(null=True, verbose_name=_("change message"), encoder=AuditLogChangesJSONEncoder)
|
||||
actor = models.ForeignKey(
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
on_delete=models.SET_NULL,
|
||||
|
|
|
|||
Loading…
Reference in a new issue