diff --git a/training/models.py b/training/models.py
index 28504d25..8c433581 100644
--- a/training/models.py
+++ b/training/models.py
@@ -201,7 +201,9 @@ class TrainingLevel(models.Model, RevisionMixin):
return 0
def user_has_requirements(self, user):
- return all(TrainingItem.user_has_qualification(req.item, user, req.depth) for req in self.requirements.all())
+ 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()))
+ return has_required_items and has_required_levels
def __str__(self):
if self.department is None:
diff --git a/training/templates/level_detail.html b/training/templates/level_detail.html
index f8935e41..d85e3ce2 100644
--- a/training/templates/level_detail.html
+++ b/training/templates/level_detail.html
@@ -44,6 +44,7 @@
{% endblock %}
{% block content %}
+{% if u %}
for {{ u }}
{% endif %}
{% if request.user.is_supervisor or perms.training.change_traininglevel %}
{% endfor %}
diff --git a/training/templatetags/tags.py b/training/templatetags/tags.py
index 70f9320e..d5313dfc 100644
--- a/training/templatetags/tags.py
+++ b/training/templatetags/tags.py
@@ -40,3 +40,14 @@ def get_supervisor(tech):
@register.filter
def get_levels_of_depth(trainee, level):
return trainee.level_qualifications.all().exclude(confirmed_on=None).exclude(level__department=models.TrainingLevel.HAULAGE).select_related('level').filter(level__level=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"
+ return mark_safe(string)
+ else:
+ return ""
diff --git a/training/tests/test_unit.py b/training/tests/test_unit.py
index 1bca896a..aa423940 100644
--- a/training/tests/test_unit.py
+++ b/training/tests/test_unit.py
@@ -3,9 +3,3 @@ import pytest
from pytest_django.asserts import assertFormError, assertRedirects, assertContains, assertNotContains
pytestmark = pytest.mark.django_db
-
-
-def test_(admin_client):
- url = reverse('add_qualification')
- response = admin_client.post(url)
- assertFormError(response, 'form', 'name', 'This field is required.')
diff --git a/training/urls.py b/training/urls.py
index e1ec58bc..6b1dc232 100644
--- a/training/urls.py
+++ b/training/urls.py
@@ -17,11 +17,13 @@ urlpatterns = [
name='add_qualification'),
path('trainee//edit_qualification/', permission_required_with_403('training.change_trainingitemqualification')(views.EditQualification.as_view()),
name='edit_qualification'),
- path('session/', login_required(views.SessionLog.as_view()), name='session_log'),
+
path('levels/', login_required(views.LevelList.as_view()), name='level_list'),
path('level//', login_required(views.LevelDetail.as_view()), name='level_detail'),
+ path('level//user//', login_required(views.LevelDetail.as_view()), name='level_detail'),
path('level//add_requirement/', login_required(views.AddLevelRequirement.as_view()), name='add_requirement'),
path('level/remove_requirement//', login_required(views.RemoveRequirement.as_view()), name='remove_requirement'),
+
path('trainee//level//confirm', login_required(views.ConfirmLevel.as_view()), name='confirm_level'),
path('trainee//item_record', login_required(views.TraineeItemDetail.as_view()), name='trainee_item_detail'),
]