diff --git a/RIGS/templates/event_detail.html b/RIGS/templates/event_detail.html index a5b6ecb3..a0afc50e 100644 --- a/RIGS/templates/event_detail.html +++ b/RIGS/templates/event_detail.html @@ -46,7 +46,7 @@

{{ event.notes|linebreaksbr }}

{% endif %}
- {% include 'item_table.html' %} + {% include 'partials/item_table.html' %} diff --git a/training/models.py b/training/models.py index d47debdd..20e5abb0 100644 --- a/training/models.py +++ b/training/models.py @@ -2,6 +2,7 @@ from django.db import models from RIGS.models import RevisionMixin, Profile from reversion import revisions as reversion +from django.urls import reverse # 'shim' overtop the profile model to neatly contain all training related fields etc class Trainee(Profile): @@ -90,6 +91,7 @@ class TrainingItemQualification(models.Model): # Levels +@reversion.register(follow=["requirements"]) class TrainingLevel(models.Model, RevisionMixin): description = models.CharField(max_length=120, blank=True) TA = 0 @@ -151,11 +153,21 @@ class TrainingLevel(models.Model, RevisionMixin): else: return "{} {}".format(self.get_department_display(), self.get_level_display()) + @property + def activity_feed_string(self): + return str(self) + def get_absolute_url(self): + return reverse('level_detail', kwargs={'pk': self.pk}) + + +@reversion.register class TrainingLevelRequirement(models.Model): level = models.ForeignKey('TrainingLevel', related_name='requirements', on_delete=models.RESTRICT) item = models.ForeignKey('TrainingItem', on_delete=models.RESTRICT) - depth = models.IntegerField(TrainingItemQualification.CHOICES) + depth = models.IntegerField(choices=TrainingItemQualification.CHOICES) + + reversion_hide = True def __str__(self): return "{} in {}".format(TrainingItemQualification.CHOICES[self.depth][1], self.item) diff --git a/training/templates/base_training.html b/training/templates/base_training.html index 2f4c13da..3a696d53 100644 --- a/training/templates/base_training.html +++ b/training/templates/base_training.html @@ -20,6 +20,7 @@ Item Detail + {% endif %} {% endblock %} diff --git a/training/templates/level_detail.html b/training/templates/level_detail.html index 544c3b76..e1f557f9 100644 --- a/training/templates/level_detail.html +++ b/training/templates/level_detail.html @@ -4,7 +4,7 @@ {% load user_level_if_present from tags %} {% block content %} -{% if edit or True %} +{% if request.user.is_supervisor or perms.training.change_traininglevel %}
Add New Requirement diff --git a/training/views.py b/training/views.py index 6b64767e..7a660b60 100644 --- a/training/views.py +++ b/training/views.py @@ -147,6 +147,12 @@ class RemoveRequirement(generic.DeleteView): def get_success_url(self): return self.request.POST.get('next') + @transaction.atomic() + @reversion.create_revision() + def delete(self, *args, **kwargs): + reversion.add_to_revision(self.get_object().level) + return super().delete(*args, **kwargs) + class ConfirmLevel(generic.RedirectView): def get_redirect_url(self, *args, **kwargs): diff --git a/versioning/versioning.py b/versioning/versioning.py index 72308919..c7ee68ba 100644 --- a/versioning/versioning.py +++ b/versioning/versioning.py @@ -21,7 +21,6 @@ class FieldComparison(object): def display_value(self, value): if (isinstance(self.field, IntegerField) or isinstance(self.field, CharField)) and self.field.choices is not None and len(self.field.choices) > 0: choice = [x[1] for x in self.field.choices if x[0] == value] - # TODO This defensive piece should not be necessary? if len(choice) > 0: return choice[0] if isinstance(self.field, BooleanField): @@ -122,7 +121,7 @@ class ModelComparison(object): old_item_versions = self.version.parent.revision.version_set.exclude(content_type=item_type) new_item_versions = self.version.revision.version_set.exclude(content_type=item_type).exclude(content_type=ContentType.objects.get_for_model(models.EventAuthorisation)) - comparisonParams = {'excluded_keys': ['id', 'event', 'order', 'checklist']} + comparisonParams = {'excluded_keys': ['id', 'event', 'order', 'checklist', 'level']} # Build some dicts of what we have item_dict = {} # build a list of items, key is the item_pk