From 590ff2b6778cb14af9fc7fb02bc94b36e4abfe61 Mon Sep 17 00:00:00 2001
From: "N. Geisler" <ngeisler@fachschaft.informatik.tu-darmstadt.de>
Date: Mon, 11 May 2020 00:03:09 +0200
Subject: [PATCH] adapt AK list filters

remove tags list
add tracks list
filter categories list by event
allow ak list filtering by track
---
 .../templates/AKSubmission/ak_list.html       | 13 +++++++----
 .../templates/AKSubmission/tracks_list.html   |  4 ++++
 .../templatetags/tags_AKSubmission.py         |  5 ++++
 AKSubmission/urls.py                          |  1 +
 AKSubmission/views.py                         | 23 +++++++++++++++----
 5 files changed, 36 insertions(+), 10 deletions(-)
 create mode 100644 AKSubmission/templates/AKSubmission/tracks_list.html

diff --git a/AKSubmission/templates/AKSubmission/ak_list.html b/AKSubmission/templates/AKSubmission/ak_list.html
index ac470dcf..3e4098bc 100644
--- a/AKSubmission/templates/AKSubmission/ak_list.html
+++ b/AKSubmission/templates/AKSubmission/ak_list.html
@@ -26,14 +26,17 @@
 {% block content %}
     <h1>{{ event.name }}: {% trans "AK List" %}</h1>
 
-    <b>{% trans 'Categories' %}:</b>
-    {% category_list categories event.slug %}
-
+    {% if categories.count > 0 %}
+        <b>{% trans 'Categories' %}:</b>
+        {% category_list categories event.slug %}
+    {% endif %}
 
     <br><br>
 
-    <b>{% trans 'Tags' %}:</b>
-    {% tag_list tags.all event.slug %}
+    {% if tracks.count > 0 %}
+        <b>{% trans 'Tracks' %}:</b>
+        {% track_list tracks event.slug %}
+    {% endif %}
 
     <br><br>
 
diff --git a/AKSubmission/templates/AKSubmission/tracks_list.html b/AKSubmission/templates/AKSubmission/tracks_list.html
new file mode 100644
index 00000000..44a5926b
--- /dev/null
+++ b/AKSubmission/templates/AKSubmission/tracks_list.html
@@ -0,0 +1,4 @@
+{% for track in tracks.all %}
+    <a href="{% url 'submit:ak_list_by_track' event_slug=event_slug track_pk=track.pk %}"><span
+            class="badge badge-info">{{ track }}</span></a>
+{% endfor %}
diff --git a/AKSubmission/templatetags/tags_AKSubmission.py b/AKSubmission/templatetags/tags_AKSubmission.py
index 0a80c2ab..e0daaf65 100644
--- a/AKSubmission/templatetags/tags_AKSubmission.py
+++ b/AKSubmission/templatetags/tags_AKSubmission.py
@@ -16,6 +16,11 @@ def tag_list(tags, event_slug):
     return {"tags": tags, "event_slug": event_slug}
 
 
+@register.inclusion_tag("AKSubmission/tracks_list.html")
+def track_list(tracks, event_slug):
+    return {"tracks": tracks, "event_slug": event_slug}
+
+
 @register.inclusion_tag("AKSubmission/category_list.html")
 def category_list(categories, event_slug):
     return {"categories": categories, "event_slug": event_slug}
diff --git a/AKSubmission/urls.py b/AKSubmission/urls.py
index 71ed56f6..7f55980b 100644
--- a/AKSubmission/urls.py
+++ b/AKSubmission/urls.py
@@ -18,6 +18,7 @@ urlpatterns = [
             path('aks/', views.AKListView.as_view(), name='ak_list'),
             path('aks/category/<int:category_pk>/', views.AKListByCategoryView.as_view(), name='ak_list_by_category'),
             path('aks/tag/<int:tag_pk>/', views.AKListByTagView.as_view(), name='ak_list_by_tag'),
+            path('aks/track/<int:track_pk>/', views.AKListByTrackView.as_view(), name='ak_list_by_track'),
             path('owner/', views.AKOwnerCreateView.as_view(), name='akowner_create'),
             path('new/', views.AKOwnerSelectDispatchView.as_view(), name='akowner_select'),
             path('owner/edit/', views.AKOwnerEditDispatchView.as_view(), name='akowner_edit_dispatch'),
diff --git a/AKSubmission/views.py b/AKSubmission/views.py
index bd392637..dee7f16c 100644
--- a/AKSubmission/views.py
+++ b/AKSubmission/views.py
@@ -7,7 +7,7 @@ from django.utils.translation import gettext_lazy as _
 from django.views import View
 from django.views.generic import ListView, DetailView, CreateView, UpdateView, DeleteView, RedirectView
 
-from AKModel.models import AK, AKCategory, AKTag, AKOwner, AKSlot
+from AKModel.models import AK, AKCategory, AKTag, AKOwner, AKSlot, AKTrack
 from AKModel.views import EventSlugMixin
 from AKModel.views import FilterByEventSlugMixin
 from AKSubmission.forms import AKWishForm, AKOwnerForm, AKEditForm, AKSubmissionForm, AKDurationForm
@@ -62,9 +62,9 @@ class AKListView(FilterByEventSlugMixin, ListView):
 
     def get_context_data(self, *, object_list=None, **kwargs):
         context = super().get_context_data(object_list=object_list, **kwargs)
-        context['categories'] = AKCategory.objects.all()
-        context["tags"] = AKTag.objects.all()
-        context["filter_condition_string"] = self.filter_condition_string
+        context['categories'] = AKCategory.objects.filter(event=self.event)
+        context['tracks'] = AKTrack.objects.filter(event=self.event)
+        context['filter_condition_string'] = self.filter_condition_string
         return context
 
 
@@ -85,7 +85,7 @@ class AKListByTagView(AKListView):
     tag = None
 
     def get_queryset(self):
-        # Find category based on event slug
+        # Find tag based on event slug
         try:
             self.tag = AKTag.objects.get(pk=self.kwargs['tag_pk'])
             self.filter_condition_string = f"{_('Tag')} = {self.tag.name}"
@@ -94,6 +94,19 @@ class AKListByTagView(AKListView):
         return super().get_queryset().filter(tags=self.tag)
 
 
+class AKListByTrackView(AKListView):
+    track = None
+
+    def get_queryset(self):
+        # Find track based on event slug
+        try:
+            self.track = AKTrack.objects.get(pk=self.kwargs['track_pk'])
+            self.filter_condition_string = f"{_('Track')} = {self.track.name}"
+        except AKTrack.DoesNotExist:
+            raise Http404
+        return super().get_queryset().filter(track=self.track)
+
+
 class AKAndAKWishSubmissionView(EventSlugMixin, CreateView):
     model = AK
     template_name = 'AKSubmission/submit_new.html'
-- 
GitLab