Нема описа

audit.py 739B

123456789101112131415161718192021222324252627282930313233
  1. from __future__ import annotations
  2. from typing import Any, Optional
  3. from django.contrib.auth import get_user_model
  4. from django.contrib.contenttypes.models import ContentType
  5. from ..models import AuditLog, Organization
  6. User = get_user_model()
  7. def log_action(
  8. *,
  9. organization: Organization,
  10. user: Optional[User],
  11. action: str,
  12. obj: Any,
  13. metadata: Optional[dict] = None,
  14. ) -> AuditLog:
  15. ct = ContentType.objects.get_for_model(obj.__class__)
  16. entry = AuditLog.objects.create(
  17. organization=organization,
  18. user=user,
  19. action=action,
  20. content_type=ct,
  21. object_id=getattr(obj, "pk", None) or getattr(obj, "id", None),
  22. metadata=metadata or {},
  23. )
  24. return entry