diff --git a/training/models.py b/training/models.py index 8c433581..1190aaec 100644 --- a/training/models.py +++ b/training/models.py @@ -202,7 +202,7 @@ class TrainingLevel(models.Model, RevisionMixin): def user_has_requirements(self, user): has_required_items = all(TrainingItem.user_has_qualification(req.item, user, req.depth) for req in self.requirements.all()) - has_required_levels = set(user.level_qualifications.values_list('level', flat=True)).issubset(set(self.prerequisite_levels.all())) + has_required_levels = not self.prerequisite_levels.all().exists() or set(user.level_qualifications.values_list('level', flat=True)).issubset(set(self.prerequisite_levels.all())) return has_required_items and has_required_levels def __str__(self): diff --git a/training/templates/level_detail.html b/training/templates/level_detail.html index 8b9869a1..1e72ed7e 100644 --- a/training/templates/level_detail.html +++ b/training/templates/level_detail.html @@ -89,11 +89,11 @@
Missing prequisite level(s)
{% endif %} diff --git a/training/templatetags/tags.py b/training/templatetags/tags.py index d5313dfc..88447be8 100644 --- a/training/templatetags/tags.py +++ b/training/templatetags/tags.py @@ -3,6 +3,7 @@ from django import template from django.utils.html import escape from django.utils.safestring import SafeData, mark_safe from django.utils.text import normalize_newlines +from django.urls import reverse from training import models @@ -45,9 +46,9 @@ def get_levels_of_depth(trainee, level): @register.simple_tag def confirm_button(user, trainee, level): if level.user_has_requirements(trainee): - string = "Awaiting Confirmation" - if user.is_supervisor or user.has_perm('training.add_traininglevelqualification'): - string += " Confirm" + string = "Awaiting Confirmation" + if models.Trainee.objects.get(pk=user.pk).is_supervisor or user.has_perm('training.add_traininglevelqualification'): + string += "Confirm".format(reverse('confirm_level', kwargs={'pk': trainee.pk, 'level_pk': level.pk})) return mark_safe(string) else: return "" diff --git a/training/views.py b/training/views.py index e1cb5f10..41f06515 100644 --- a/training/views.py +++ b/training/views.py @@ -205,10 +205,7 @@ class ConfirmLevel(generic.RedirectView): @transaction.atomic() @reversion.create_revision() def get_redirect_url(self, *args, **kwargs): - level_qualification = models.TrainingLevelQualification.objects.get(trainee=kwargs['pk'], level=kwargs['level_pk']) - level_qualification.confirmed_by = self.request.user - level_qualification.confirmed_on = timezone.now() - level_qualification.save() + level_qualification = models.TrainingLevelQualification.objects.create(trainee=models.Trainee.objects.get(pk=kwargs['pk']), level=models.TrainingLevel.objects.get(pk=kwargs['level_pk']), confirmed_by=self.request.user, confirmed_on=timezone.now()) reversion.add_to_revision(level_qualification.trainee) reversion.set_user(self.request.user) return reverse_lazy('trainee_detail', kwargs={'pk': kwargs['pk']})