diff --git a/seminar/templates/seminar/archiv/temata.html b/seminar/templates/seminar/archiv/temata.html
index ba2a6206..fc7d87e8 100644
--- a/seminar/templates/seminar/archiv/temata.html
+++ b/seminar/templates/seminar/archiv/temata.html
@@ -7,17 +7,13 @@
{% endblock %}{% endblock%}
- {% for tema in object_list %}
- {% with tema.cislo_zadani.rocnik.rocnik as rocnik %}
- {% ifchanged rocnik %}
- {% if not forloop.first %}{% endif %}
-
{{ rocnik }}. ročník
-
{% endblock content %}
diff --git a/seminar/views/views_all.py b/seminar/views/views_all.py
index 95eb07d1..79de03e1 100644
--- a/seminar/views/views_all.py
+++ b/seminar/views/views_all.py
@@ -27,6 +27,7 @@ import seminar.forms as f
from datetime import timedelta, date, datetime
from django.utils import timezone
from itertools import groupby
+from collections import OrderedDict
import tempfile
import subprocess
import shutil
@@ -777,7 +778,28 @@ class CisloView(generic.DetailView):
class ArchivTemataView(generic.ListView):
model = Problem
template_name = 'seminar/archiv/temata.html'
- queryset = Tema.objects.filter(stav=Problem.STAV_ZADANY).select_related('cislo_zadani__rocnik').order_by('-cislo_zadani__rocnik__rocnik', 'kod')
+ queryset = Tema.objects.filter(stav=Problem.STAV_ZADANY).select_related('rocnik').order_by('-rocnik', 'kod')
+
+ def get_context_data(self, *args, **kwargs):
+ ctx = super().get_context_data(*args, **kwargs)
+ # Najdeme, jaké ročníky mají témata
+ # TODO: Tohle by se rovnou mohlo tahat z databáze, ne?
+ # Navíc už asi nepotřebuji ten select_related, že?
+ rocniky_set = set()
+ for tema in ctx['object_list']:
+ rocniky_set.add(tema.rocnik)
+ rocniky = list(rocniky_set)
+ rocniky.sort(key=lambda r: int(r.rocnik), reverse=True)
+
+ # Přiřadíme témátka k ročníkům
+ # TODO: Asi taky jde udělat nějak elegantněji, ne?
+ ctx['rocniky'] = OrderedDict()
+ for rocnik in rocniky:
+ ctx['rocniky'][rocnik] = []
+ for tema in ctx['object_list']:
+ if tema.rocnik == rocnik:
+ ctx['rocniky'][rocnik].append(tema)
+ return ctx
### Generovani vysledkovky