from django.db import models from django.utils.translation import gettext_lazy as _ class GDPR_Event(models.Model): """ Model to log GDPR-related events for auditing purposes. """ EVENT_TYPES = [ ("DATA_EXPORT", _("Export de données")), ("DATA_ANONYMIZATION", _("Anonymisation de données")), ("CONSENT_WITHDRAWAL", _("Consentement retiré")), ] EVENT_REASON = [ ("USER_REQUEST", _("Demande utilisateur")), ("RETENTION_POLICY", _("Politique de conservation")), ] event_type = models.CharField( max_length=50, choices=EVENT_TYPES, verbose_name=_("type d'événement") ) subject_reference = models.CharField( max_length=255, verbose_name=_("objet concerné"), help_text=_("Objet concerné par l'événement : Class:id"), ) fields_touched = models.JSONField( blank=True, verbose_name=_("champs affectés"), help_text=_("Liste des champs affectés par l'événement."), ) reason = models.CharField( max_length=50, verbose_name=_("raison"), choices=EVENT_REASON ) done_at = models.DateTimeField(auto_now_add=True, verbose_name=_("date et heure")) done_by = models.ForeignKey( "users.User", null=True, blank=True, on_delete=models.SET_NULL, verbose_name=_("Effectué par"), ) class Meta: verbose_name = _("Événement RGPD") verbose_name_plural = _("Événements RGPD") def __str__(self): return f"{self.get_event_type_display()} - {self.done_at} - {self.subject_reference}"