Saas-Base / apps /audit /models /data_export.py
rsnarsna
first commit
667aacd
Raw
History Blame Contribute Delete
1.53 kB
"""
DataExport model β€” GDPR data portability requests.
Maps to AGENT.md DBML: `data_exports` table (Lines 442-451).
"""
from django.conf import settings
from django.db import models
from core.models import BaseModel
class DataExport(BaseModel):
"""
Tracks a user's data export request (GDPR Article 20).
Goes through: pending β†’ processing β†’ completed β†’ expired.
"""
class Status(models.TextChoices):
PENDING = "pending", "Pending"
PROCESSING = "processing", "Processing"
COMPLETED = "completed", "Completed"
FAILED = "failed", "Failed"
EXPIRED = "expired", "Expired"
user = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
related_name="data_exports",
)
org = models.ForeignKey(
"organizations.Organization",
on_delete=models.SET_NULL,
null=True,
blank=True,
related_name="data_exports",
)
status = models.CharField(
max_length=20,
choices=Status.choices,
default=Status.PENDING,
)
file_path = models.CharField(max_length=500, blank=True, default="")
requested_at = models.DateTimeField(auto_now_add=True)
completed_at = models.DateTimeField(null=True, blank=True)
expires_at = models.DateTimeField(null=True, blank=True)
class Meta:
db_table = "data_exports"
ordering = ["-requested_at"]
def __str__(self) -> str:
return f"Export {self.pk} ({self.get_status_display()})"