Browse Source

Implementovaný ArchivTemataView

middleware_test
Pavel 'LEdoian' Turinsky 5 years ago
parent
commit
39dc2d8e32
  1. 18
      seminar/templates/seminar/archiv/temata.html
  2. 24
      seminar/views/views_all.py

18
seminar/templates/seminar/archiv/temata.html

@ -7,17 +7,13 @@
{% endblock %}{% endblock%} {% endblock %}{% endblock%}
</h1> </h1>
{% for tema in object_list %} {% for rocnik, temata in rocniky.items %}
{% with tema.cislo_zadani.rocnik.rocnik as rocnik %} <h2>Ročník {{ rocnik }}</h2>
{% ifchanged rocnik %} <ul>
{% if not forloop.first %}</ul>{% endif %} {% for tema in temata %}
<h2>{{ rocnik }}. ročník</h2> <li><a href="{{ tema.verejne_utl }}"> {{ tema.kod_v_rocniku }}: {{ tema.nazev }} </a></li>
<ul> {% endfor %}
{% endifchanged %} </ul>
<li>
<a href="{{ tema.verejne_url }}">{{ tema.kod_v_rocniku }}: {{ tema.nazev }}</a>
{% endwith %}
{% endfor %} {% endfor %}
</ul>
{% endblock content %} {% endblock content %}

24
seminar/views/views_all.py

@ -27,6 +27,7 @@ import seminar.forms as f
from datetime import timedelta, date, datetime from datetime import timedelta, date, datetime
from django.utils import timezone from django.utils import timezone
from itertools import groupby from itertools import groupby
from collections import OrderedDict
import tempfile import tempfile
import subprocess import subprocess
import shutil import shutil
@ -777,7 +778,28 @@ class CisloView(generic.DetailView):
class ArchivTemataView(generic.ListView): class ArchivTemataView(generic.ListView):
model = Problem model = Problem
template_name = 'seminar/archiv/temata.html' 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 ### Generovani vysledkovky

Loading…
Cancel
Save