"""passbook audit models"""

from django.conf import settings
from django.db import models
from reversion import register

from passbook.lib.models import UUIDModel


@register()
class AuditEntry(UUIDModel):
    """An individual audit log entry"""

    user = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, on_delete=models.SET_NULL)
    action = models.TextField()
    date = models.DateTimeField(auto_now_add=True)
    app = models.TextField()

    def save(self, *args, **kwargs):
        if self.pk:
            raise NotImplementedError("you may not edit an existing %s" % self._meta.model_name)
        super().save(*args, **kwargs)