diff --git a/training/templates/trainee_item_list.html b/training/templates/trainee_item_list.html index 7e61288a..cb1f53c7 100644 --- a/training/templates/trainee_item_list.html +++ b/training/templates/trainee_item_list.html @@ -7,7 +7,8 @@ {% load colour_from_depth from tags %} {% block content %} -
+

Search by supervisor name, item name or item ID

{% include 'partials/list_search.html' %} +
diff --git a/training/views.py b/training/views.py index d19e7d1c..6a07ec54 100644 --- a/training/views.py +++ b/training/views.py @@ -47,7 +47,18 @@ class TraineeItemDetail(generic.ListView): template_name = 'trainee_item_list.html' def get_queryset(self): - return models.Trainee.objects.get(pk=self.kwargs['pk']).qualifications_obtained.all().order_by('-date').select_related('item', 'trainee', 'supervisor', 'item__category') + q = self.request.GET.get('q', "") + + filter = Q(item__name__icontains=q) | Q(supervisor__first_name__icontains=q) | Q(supervisor__last_name__icontains=q) + + try: + q = q.split('.') + filter = filter | Q(item__category__reference_number=int(q[0]), item__reference_number=int(q[1])) + except: # noqa + # not an integer + pass + + return models.Trainee.objects.get(pk=self.kwargs['pk']).qualifications_obtained.all().filter(filter).order_by('-date').select_related('item', 'trainee', 'supervisor', 'item__category') def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs)