diff --git a/training/models.py b/training/models.py index 9ab380fb..7cbbd67f 100644 --- a/training/models.py +++ b/training/models.py @@ -16,9 +16,17 @@ class Trainee(Profile, RevisionMixin): def started_levels(self): return [level for level in TrainingLevel.objects.all() if level.percentage_complete(self) > 0 and level.pk not in self.level_qualifications.values_list('level', flat=True)] + @property + def is_technician(self): + return self.level_qualifications.exclude(confirmed_on=None).select_related('level') \ + .filter(level__level=TrainingLevel.TECHNICIAN) \ + .exclude(level__department=TrainingLevel.HAULAGE) \ + .exclude(level__department__isnull=True).exists() + + @property def is_supervisor(self): - return self.level_qualifications.all().exclude(confirmed_on=None).select_related('level') \ + return self.level_qualifications.exclude(confirmed_on=None).select_related('level') \ .filter(level__level__gte=TrainingLevel.SUPERVISOR) \ .exclude(level__department=TrainingLevel.HAULAGE) \ .exclude(level__department__isnull=True).exists() @@ -66,7 +74,7 @@ class TrainingItem(models.Model): @staticmethod def user_has_qualification(item, user, depth): - return user.qualifications_obtained.values('item', 'depth').filter(item=item, depth__gte=depth).exists() + return user.qualifications_obtained.only('item', 'depth').filter(item=item, depth__gte=depth).exists() class Meta: unique_together = ["reference_number", "active", "category"] @@ -211,6 +219,14 @@ class TrainingLevel(models.Model, RevisionMixin): def get_absolute_url(self): return reverse('level_detail', kwargs={'pk': self.pk}) + @property + def get_icon(self): + if self.icon is not None: + icon = "".format(self.icon) + else: + icon = "".join([w[0] for w in str(self).split()]) + return mark_safe("{}".format(self.department_colour, str(self), icon)) + @reversion.register class TrainingLevelRequirement(models.Model, RevisionMixin): @@ -238,11 +254,7 @@ class TrainingLevelQualification(models.Model, RevisionMixin): @property def get_icon(self): - if self.level.icon is not None: - icon = "".format(self.level.icon) - else: - icon = "".join([w[0] for w in str(self.level).split()]) - return mark_safe("{}".format(self.level.department_colour, self.level, icon)) + return self.level.get_icon def __str__(self): if self.level.is_common_competencies: diff --git a/training/templates/item_list.html b/training/templates/item_list.html index 62a09d59..9303fe34 100644 --- a/training/templates/item_list.html +++ b/training/templates/item_list.html @@ -16,7 +16,7 @@ {% if item.active %}
  • {{ item }}
  • {% elif request.user.is_superuser %} -
  • {{ item }} (inactive)
  • +
  • {{ item }}
  • {% endif %} {% endfor %} diff --git a/training/templates/trainee_list.html b/training/templates/trainee_list.html index 3481ba85..07c36cad 100644 --- a/training/templates/trainee_list.html +++ b/training/templates/trainee_list.html @@ -35,9 +35,9 @@ {% for object in object_list %} {{ object.name }} {% if request.user.pk == object.pk %}{%endif%} - {{ object.is_driver|yesno|title }} + {{ object.is_driver|yesno|title }} {% for level in object|get_levels_of_depth:1 %}{% if forloop.first %}Yes {%endif%}{{ level.get_icon }}{%empty%}No{%endfor%} - {% for level in object|get_levels_of_depth:2 %}{% if forloop.first %}Yes {%endif%}{{ level.get_icon }}{%empty%}No{%endfor%} + {% for level in object|get_levels_of_depth:2 %}{% if forloop.first %}Yes {%endif%}{{ level.get_icon }}{%empty%}No{%endfor%} {{ object.num_qualifications }} {% if forloop.first %} {% endif %} View Training Record diff --git a/training/templatetags/tags.py b/training/templatetags/tags.py index a3cc1126..70f9320e 100644 --- a/training/templatetags/tags.py +++ b/training/templatetags/tags.py @@ -11,10 +11,10 @@ register = template.Library() @register.simple_tag def user_has_qualification(user, item, depth): - if models.TrainingItem.user_has_qualification(item, user, depth) is not None: - return mark_safe("") + if models.TrainingItem.user_has_qualification(item, user, depth): + return mark_safe("") else: - return mark_safe("") + return mark_safe("") @register.simple_tag diff --git a/training/views.py b/training/views.py index 6664a7fc..94587b74 100644 --- a/training/views.py +++ b/training/views.py @@ -73,7 +73,7 @@ class LevelDetail(generic.DetailView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) - context["page_title"] = "Training Level {} ".format(self.object, self.object.department_colour, self.object.icon) + context["page_title"] = "Training Level {} {}".format(self.object, self.object.get_icon) context["users_with"] = map(lambda qual: qual.trainee, models.TrainingLevelQualification.objects.filter(level=self.object)) return context