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

23 lines
804 B
Python

from apps.audit.models import AuditEvent
def record(actor, action, object_type, object_id="", before=None, after=None, metadata=None, request=None):
"""Write an immutable audit event. Never raises to avoid breaking business flows."""
ip = None
if request is not None:
xff = request.META.get("HTTP_X_FORWARDED_FOR")
ip = (xff.split(",")[0].strip() if xff else request.META.get("REMOTE_ADDR"))
try:
AuditEvent.objects.create(
actor=actor if actor and actor.is_authenticated else None,
action=action,
object_type=object_type,
object_id=str(object_id),
ip=ip,
before=before or {},
after=after or {},
metadata=metadata or {},
)
except Exception:
pass