Files
cetana-backend/apps/audit/models.py
T
2026-09-24 12:32:59 +03:30

24 lines
929 B
Python

from django.db import models
from apps.core.models import UUIDModel
class AuditEvent(UUIDModel):
"""Immutable audit log entry. Records are never updated or deleted."""
actor = models.ForeignKey("accounts.User", null=True, blank=True, on_delete=models.SET_NULL)
action = models.CharField(max_length=120, db_index=True)
object_type = models.CharField(max_length=120, db_index=True)
object_id = models.CharField(max_length=120, blank=True, db_index=True)
ip = models.GenericIPAddressField(null=True, blank=True)
before = models.JSONField(default=dict, blank=True)
after = models.JSONField(default=dict, blank=True)
metadata = models.JSONField(default=dict, blank=True)
created_at = models.DateTimeField(auto_now_add=True, db_index=True)
class Meta:
ordering = ["-created_at"]
def __str__(self) -> str:
return f"{self.action} {self.object_type}:{self.object_id}"