""" Opslag van de aan/uit-status van modules per installatie (school). Het register (registry.py) weet wélke modules bestaan; dit model onthoudt of ze aan staan. Zo blijft de instelling bewaard en kan een beheerder modules via het beheerscherm in- en uitschakelen. """ from django.db import models class ModuleState(models.Model): """De aan/uit-status van één module.""" key = models.CharField("modulesleutel", max_length=64, unique=True) enabled = models.BooleanField("ingeschakeld", default=False) updated_at = models.DateTimeField(auto_now=True) class Meta: verbose_name = "modulestatus" verbose_name_plural = "modulestatussen" ordering = ["key"] def __str__(self) -> str: status = "aan" if self.enabled else "uit" return f"{self.key} ({status})" class AuditEvent(models.Model): """Persistent auditspoor voor gevoelige mutaties en beheerdersacties.""" created_at = models.DateTimeField(auto_now_add=True) actor = models.CharField(max_length=150, blank=True) action = models.CharField(max_length=80) target = models.CharField(max_length=200, blank=True) ip_address = models.GenericIPAddressField(null=True, blank=True) extra = models.JSONField(default=dict, blank=True) class Meta: verbose_name = "audit event" verbose_name_plural = "audit events" ordering = ["-created_at"] indexes = [ models.Index(fields=["-created_at"]), models.Index(fields=["actor"]), models.Index(fields=["action"]), ] def __str__(self) -> str: return f"{self.created_at:%Y-%m-%d %H:%M} {self.actor} {self.action} {self.target}".strip()