diff --git a/RIGS/models.py b/RIGS/models.py index 95a75bf2..c8f218de 100644 --- a/RIGS/models.py +++ b/RIGS/models.py @@ -19,6 +19,7 @@ from reversion import revisions as reversion from reversion.models import Version +@reversion.register class Profile(AbstractUser): initials = models.CharField(max_length=5, unique=True, null=True, blank=False) phone = models.CharField(max_length=13, blank=True, default='') diff --git a/training/models.py b/training/models.py index 20e5abb0..8903b98b 100644 --- a/training/models.py +++ b/training/models.py @@ -5,6 +5,7 @@ from reversion import revisions as reversion from django.urls import reverse # 'shim' overtop the profile model to neatly contain all training related fields etc +@reversion.register # profile is already registered, but this triggers my custom versioning logic class Trainee(Profile): class Meta: proxy = True @@ -24,6 +25,9 @@ class Trainee(Profile): qual = self.qualifications_obtained.filter(item=item).first() # this is a somewhat ghetto version of get_or_none return qual is not None and qual.depth >= required_depth + def get_absolute_url(self): + return reverse('trainee_detail', kwargs={'pk': self.pk}) + # Items class TrainingCategory(models.Model): reference_number = models.CharField(max_length=3) @@ -35,6 +39,7 @@ class TrainingCategory(models.Model): class Meta: verbose_name_plural = 'Training Categories' + class TrainingItem(models.Model): reference_number = models.CharField(max_length=3) category = models.ForeignKey('TrainingCategory', related_name='items', on_delete=models.RESTRICT) @@ -75,7 +80,9 @@ class TrainingItemQualification(models.Model): super().save() for level in TrainingLevel.objects.all(): # Mm yes efficiency FIXME if level.user_has_requirements(self.trainee): - level_qualification = TrainingLevelQualification.objects.get_or_create(trainee=self.trainee, level=level) + with reversion.create_revision(): + level_qualification = TrainingLevelQualification.objects.get_or_create(trainee=self.trainee, level=level) + reversion.add_to_revision(self.trainee) @classmethod def get_colour_from_depth(obj, depth): @@ -176,12 +183,15 @@ class TrainingLevelRequirement(models.Model): unique_together = ["level", "item"] +@reversion.register class TrainingLevelQualification(models.Model): trainee = models.ForeignKey('Trainee', related_name='levels', on_delete=models.RESTRICT) level = models.ForeignKey('TrainingLevel', on_delete=models.RESTRICT) confirmed_on = models.DateTimeField(null=True) confirmed_by = models.ForeignKey('Trainee', related_name='confirmer', on_delete=models.RESTRICT, null=True) + reversion_hide = True + def __str__(self): return "{} qualified as a {}".format(self.trainee, self.level) diff --git a/training/templates/trainee_detail.html b/training/templates/trainee_detail.html index 4cc4968e..d34e2a55 100644 --- a/training/templates/trainee_detail.html +++ b/training/templates/trainee_detail.html @@ -111,4 +111,9 @@ {% endfor %} +