| """ |
| EventLog model — general-purpose audit/activity event log. |
| |
| Maps to AGENT.md DBML: `event_log` table (Lines 494-503). |
| """ |
| from django.conf import settings |
| from django.db import models |
|
|
| from core.models import BaseModel |
|
|
|
|
| class EventLog(BaseModel): |
| """ |
| Stores any significant event in the platform. |
| |
| Used for analytics, security monitoring, and audit trails. |
| """ |
|
|
| actor_user = models.ForeignKey( |
| settings.AUTH_USER_MODEL, |
| on_delete=models.SET_NULL, |
| null=True, |
| blank=True, |
| related_name="event_logs", |
| ) |
| org = models.ForeignKey( |
| "organizations.Organization", |
| on_delete=models.SET_NULL, |
| null=True, |
| blank=True, |
| related_name="event_logs", |
| ) |
| event_type = models.CharField(max_length=100, db_index=True) |
| metadata = models.JSONField(default=dict, blank=True) |
| ip_address = models.GenericIPAddressField(null=True, blank=True) |
| user_agent = models.TextField(blank=True, default="") |
|
|
| class Meta: |
| db_table = "event_log" |
| ordering = ["-created_at"] |
| indexes = [ |
| models.Index(fields=["event_type", "created_at"]), |
| ] |
|
|
| def __str__(self) -> str: |
| return f"{self.event_type} by {self.actor_user_id}" |
|
|