Add history tracking functionality using django-pghistory; implement views, templates, and middleware for event serialization and context management

This commit is contained in:
pacnpal
2025-02-09 09:52:19 -05:00
parent a148d34cf9
commit 7ecf43f1a4
14 changed files with 210 additions and 7 deletions

View File

@@ -9,11 +9,13 @@ from django.core.exceptions import ObjectDoesNotExist, FieldDoesNotExist
from django.contrib.auth.base_user import AbstractBaseUser
from django.contrib.auth.models import AnonymousUser
from django.utils.text import slugify
import pghistory
from core.models import HistoricalModel
UserType = Union[AbstractBaseUser, AnonymousUser]
class EditSubmission(models.Model):
@pghistory.track() # Track all changes by default
class EditSubmission(HistoricalModel):
STATUS_CHOICES = [
("PENDING", "Pending"),
("APPROVED", "Approved"),
@@ -196,8 +198,8 @@ class EditSubmission(models.Model):
self.handled_at = timezone.now()
self.save()
class PhotoSubmission(models.Model):
@pghistory.track() # Track all changes by default
class PhotoSubmission(HistoricalModel):
STATUS_CHOICES = [
("PENDING", "Pending"),
("APPROVED", "Approved"),
@@ -287,7 +289,6 @@ class PhotoSubmission(models.Model):
if user_role in ["MODERATOR", "ADMIN", "SUPERUSER"]:
self.approve(self.user)
def escalate(self, moderator: UserType, notes: str = "") -> None:
"""Escalate the photo submission to admin"""
self.status = "ESCALATED"