From 185debcb58d6c787cf3a1ecd46020b2d3b8c035d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Benjamin=20H=C3=A4ttasch?=
 <benjamin.haettasch@fachschaft.informatik.tu-darmstadt.de>
Date: Mon, 11 May 2020 21:58:26 +0200
Subject: [PATCH] Fix categories for submission overview

This fix ensures that the categories in submission overview are shown even when there is no AK with this category submitted yet.
---
 .../AKSubmission/submission_overview.html     |  4 +--
 AKSubmission/views.py                         | 31 +++++++++----------
 2 files changed, 16 insertions(+), 19 deletions(-)

diff --git a/AKSubmission/templates/AKSubmission/submission_overview.html b/AKSubmission/templates/AKSubmission/submission_overview.html
index 15748b2a..5c4ab1d0 100644
--- a/AKSubmission/templates/AKSubmission/submission_overview.html
+++ b/AKSubmission/templates/AKSubmission/submission_overview.html
@@ -70,7 +70,7 @@
     </noscript>
 
     <ul class="nav nav-tabs" style="margin-bottom:15px">
-        {% for category, _ in categories %}
+        {% for category, _ in categories_with_aks %}
             <li class="nav-item">
                 <a class="nav-link {% if forloop.first %}active{% endif %}" data-toggle="tab"
                    href="#category_{{ category.pk }}">{{ category.name }}</a>
@@ -79,7 +79,7 @@
     </ul>
 
     <div id="akListTabbed" class="tab-content">
-        {% for category, AKs in categories %}
+        {% for category, AKs in categories_with_aks %}
             <div class="tab-pane fade {% if forloop.first %}show active{% endif %}" id="category_{{ category.pk }}">
                 <p><b>{{ category.name }}:</b> {{ category.description }}</p>
                 {% include "AKSubmission/ak_list_table.html" %}
diff --git a/AKSubmission/views.py b/AKSubmission/views.py
index dee7f16c..122db18f 100644
--- a/AKSubmission/views.py
+++ b/AKSubmission/views.py
@@ -14,33 +14,30 @@ from AKSubmission.forms import AKWishForm, AKOwnerForm, AKEditForm, AKSubmission
 
 
 class SubmissionOverviewView(FilterByEventSlugMixin, ListView):
-    model = AK
-    context_object_name = "AKs"
+    model = AKCategory
+    context_object_name = "categories"
     template_name = "AKSubmission/submission_overview.html"
-    ordering = ['category']
 
     def get_context_data(self, *, object_list=None, **kwargs):
         context = super().get_context_data(object_list=object_list, **kwargs)
 
         # Sort AKs into different lists (by their category)
-        categories = []
-        aks_for_category = []
         ak_wishes = []
-        current_category = None
-        for ak in context["AKs"]:
-            if ak.category != current_category:
-                current_category = ak.category
-                aks_for_category = []
-                categories.append((current_category, aks_for_category))
-            if settings.WISHES_AS_CATEGORY and ak.wish:
-                ak_wishes.append(ak)
-            else:
-                aks_for_category.append(ak)
+        categories_with_aks = []
+
+        for category in context["categories"]:
+            aks_for_category = []
+            for ak in category.ak_set.all():
+                if settings.WISHES_AS_CATEGORY and ak.wish:
+                    ak_wishes.append(ak)
+                else:
+                    aks_for_category.append(ak)
+            categories_with_aks.append((category, aks_for_category))
 
         if settings.WISHES_AS_CATEGORY:
-            categories.append(
+            categories_with_aks.append(
                 ({"name": _("Wishes"), "pk": "wish", "description": _("AKs one would like to have")}, ak_wishes))
-        context["categories"] = categories
+        context["categories_with_aks"] = categories_with_aks
 
         # Get list of existing owners for event (for AK submission start)
         context["existingOwners"] = AKOwner.objects.filter(event=self.event)
-- 
GitLab