diff --git a/seminar/templates/seminar/archiv/rocnik.html b/seminar/templates/seminar/archiv/rocnik.html
index b3599954..baa5e09d 100644
--- a/seminar/templates/seminar/archiv/rocnik.html
+++ b/seminar/templates/seminar/archiv/rocnik.html
@@ -29,38 +29,8 @@
{% endif %}
{% if vysledkovka %}
-
Výsledkovka
-
-
- #
- | Jméno
- | R.
- | Odjakživa
- {% for c in rocnik.verejna_cisla %}
- {% if c.verejna_vysledkovka %}
- |
- {{c.rocnik.rocnik}}.{{ c.cislo }}
- {% endif %}
- {% endfor %}
- | Celkem
-
- {% for rv in vysledkovka %}
- |
- {% autoescape off %}{{ rv.poradi }}{% endautoescape %}
- |
- {% if rv.titul %}
- {{ rv.titul }}MM
- {% endif %}
- {{ rv.resitel.plne_jmeno }}
- | {{ rv.resitel.rocnik }}
- | {{ rv.body_odjakziva }}
- {% for b in rv.body_cisla %}
- | {{ b }}
- {% endfor %}
- | {{ rv.body_rocnik }}
- |
- {% endfor %}
-
+ Výsledková listina
+ {% include "seminar/vysledkovka_rocnik.html" %}
{% endif %}
diff --git a/seminar/templates/seminar/vysledkovka_rocnik.html b/seminar/templates/seminar/vysledkovka_rocnik.html
new file mode 100644
index 00000000..91e1d8ca
--- /dev/null
+++ b/seminar/templates/seminar/vysledkovka_rocnik.html
@@ -0,0 +1,31 @@
+
+
+ #
+ | Jméno
+ | R.
+ | Odjakživa
+ {% for c in rocnik.verejna_cisla %}
+ {% if c.verejna_vysledkovka %}
+ |
+ {{c.rocnik.rocnik}}.{{ c.cislo }}
+ {% endif %}
+ {% endfor %}
+ | Celkem
+
+{% for rv in vysledkovka %}
+ |
+ {% autoescape off %}{{ rv.poradi }}{% endautoescape %}
+ |
+ {% if rv.titul %}
+ {{ rv.titul }}MM
+ {% endif %}
+ {{ rv.resitel.plne_jmeno }}
+ | {{ rv.resitel.rocnik }}
+ | {{ rv.body_odjakziva }}
+ {% for b in rv.body_cisla %}
+ | {{ b }}
+ {% endfor %}
+ | {{ rv.body_rocnik }}
+ |
+{% endfor %}
+
diff --git a/seminar/templates/seminar/zadani/AktualniVysledkovka.html b/seminar/templates/seminar/zadani/AktualniVysledkovka.html
new file mode 100644
index 00000000..e541141c
--- /dev/null
+++ b/seminar/templates/seminar/zadani/AktualniVysledkovka.html
@@ -0,0 +1,19 @@
+{% extends "seminar/zadani/base.html" %}
+
+{% block submenu %}
+ {% with "vysledkova-listina" as selected %}
+ {% include 'seminar/zadani/submenu.html' %}
+ {% endwith %}
+{% endblock submenu %}
+
+
+{% block content %}
+{% with nastaveni.aktualni_rocnik as rocnik %}
+ Výsledky
+ {% if vysledkovka %}
+ {% include "seminar/vysledkovka_rocnik.html" %}
+ {% else %}
+ V tomto ročníku zatím žádné výsledky nejsou
+ {% endif %}
+{% endwith %}
+{% endblock content %}
diff --git a/seminar/urls.py b/seminar/urls.py
index 1af3d42a..be4947c6 100644
--- a/seminar/urls.py
+++ b/seminar/urls.py
@@ -19,6 +19,7 @@ urlpatterns = patterns('',
url(r'^zadani/aktualni/$', views.AktualniZadaniView, name='seminar_aktualni_zadani'),
url(r'^zadani/temata/$', views.ZadaniTemataView, name='seminar_temata'),
+ url(r'^zadani/vysledkova-listina/$', views.ZadaniAktualniVysledkovkaView, name='seminar_vysledky'),
url(r'^$', views.TitulniStranaView.as_view(), name='titulni_strana'),
url(r'^stare-novinky/$', views.StareNovinkyView.as_view(), name='stare_novinky'),
diff --git a/seminar/views.py b/seminar/views.py
index 955668e4..d8616a8d 100644
--- a/seminar/views.py
+++ b/seminar/views.py
@@ -37,6 +37,17 @@ def ZadaniTemataView(request):
}
)
+def ZadaniAktualniVysledkovkaView(request):
+ nastaveni = get_object_or_404(Nastaveni)
+ vysledkovka = vysledkovka_rocniku(nastaveni.aktualni_rocnik)
+ return render(request, 'seminar/zadani/AktualniVysledkovka.html',
+ {
+ 'nastaveni': nastaveni,
+ 'vysledkovka': vysledkovka,
+ }
+ )
+
+
### Titulni strana
class TitulniStranaView(generic.ListView):
@@ -110,6 +121,53 @@ def sloupec_s_poradim(vysledky):
return poradi_l
+def vysledkovka_rocniku(rocnik):
+ """Přebírá ročník (např. context["rocnik"]) a vrací výsledkovou listinu ve
+ formě vhodné pro šablonu "seminar/vysledkovka_rocniku.html"
+ """
+
+ #vyberu vsechny verejne vysledky z rocniku
+ cisla_v_rocniku = VysledkyKCisluZaRocnik.objects.filter(cislo__verejna_vysledkovka=True, cislo__rocnik=rocnik).order_by('cislo')
+
+ #pokud žádné nejsou, výsledkovka se nezobrazí
+ if not cisla_v_rocniku:
+ return None
+
+ #vybere vsechny vysledky z posledniho verejneho cisla a setridi sestupne dle bodu
+ vysledky = list(cisla_v_rocniku.filter(cislo = cisla_v_rocniku[0].cislo).order_by('-body', 'resitel__prijmeni', 'resitel__jmeno').select_related('resitel'))
+
+ vysledkovka = []
+
+ # doplníme některé údaje do řádků výsledkovky pro řešitele ve skupině
+ for poradi, v in zip(sloupec_s_poradim(vysledky), vysledky):
+ v.poradi = poradi
+ v.resitel.rocnik = v.resitel.rocnik(rocnik)
+
+ verejne_vysl_odjakziva = VysledkyKCisluOdjakziva.objects.filter(cislo__verejna_vysledkovka=True, cislo__rocnik=rocnik, cislo=cisla_v_rocniku[0].cislo)
+
+ v.body_odjakziva = verejne_vysl_odjakziva.filter(resitel = v.resitel)[0].body
+ v.titul = v.resitel.get_titul(v.body_odjakziva)
+ v.body_rocnik = v.body
+ v.body_cisla = []
+
+ #pokud pro dany rok a cislo nema resitel vysledky, ma defaultne 0
+ for cis in rocnik.verejna_cisla():
+ if cis.verejna_vysledkovka:
+ #seznam vysledku se spravnym rocnikem a cislem pro resitele
+ #zobrazim jen je-li vysledkovka verejna
+ body_za_cislo = VysledkyZaCislo.objects.filter(cislo__rocnik=rocnik).filter(cislo = cis).filter(resitel = v.resitel)
+ if body_za_cislo:
+ #neprazdne vysledky by mely obsahovat prave jeden vysledek
+ v.body_cisla.append(body_za_cislo[0].body)
+ else:
+ #resitel nema za cislo body
+ v.body_cisla.append(0)
+
+ vysledkovka.append(v)
+
+ return vysledkovka
+
+
class RocnikView(generic.DetailView):
model = Rocnik
template_name = 'seminar/archiv/rocnik.html'
@@ -131,44 +189,7 @@ class RocnikView(generic.DetailView):
def get_context_data(self, **kwargs):
context = super(RocnikView, self).get_context_data(**kwargs)
- cisla_v_rocniku = VysledkyKCisluZaRocnik.objects.filter(cislo__verejna_vysledkovka = True).filter(cislo__rocnik = context['rocnik']).order_by('cislo')
- #vyberu vsechny verejne vysledky z rocniku
- #pokud žádné nejsou, výsledkovka se nezobrazí
- if cisla_v_rocniku:
- vysledky = list(cisla_v_rocniku.filter(cislo = cisla_v_rocniku[0].cislo).order_by('-body', 'resitel__prijmeni', 'resitel__jmeno').select_related('resitel'))
- #vybere vsechny vysledky z posledniho verejneho cisla a setridi sestupne dle bodu
- vysledkovka = []
-
- # doplníme některé údaje do řádků výsledkovky pro řešitele ve skupině
- for poradi, v in zip(sloupec_s_poradim(vysledky), vysledky):
- v.poradi = poradi
- v.resitel.rocnik = v.resitel.rocnik(context['rocnik'])
-
- verejne_vysl_odjakziva = VysledkyKCisluOdjakziva.objects.filter(cislo__verejna_vysledkovka = True).filter(cislo__rocnik = context['rocnik']).filter(cislo = cisla_v_rocniku[0].cislo)
-
- v.body_odjakziva = verejne_vysl_odjakziva.filter(resitel = v.resitel)[0].body
- v.titul = v.resitel.get_titul(v.body_odjakziva)
- v.body_rocnik = v.body
- v.body_cisla = []
-
- #pokud pro dany rok a cislo nema resitel vysledky, ma defaultne 0
- for cis in context['rocnik'].verejna_cisla():
- if cis.verejna_vysledkovka:
- body_za_cislo = VysledkyZaCislo.objects.filter(cislo__rocnik = context['rocnik']).filter(cislo = cis).filter(resitel = v.resitel)
- #seznam vysledku se spravnym rocnikem a cislem pro resitele
- #zobrazim jen je-li vysledkovka verejna
- if body_za_cislo:
- v.body_cisla.append(body_za_cislo[0].body)
- #neprazdne vysledky by mely obsahovat prave jeden vysledek
- else:
- v.body_cisla.append(0)
- #resitel nema za cislo body
-
- vysledkovka.append(v)
-
-
- context['vysledkovka'] = vysledkovka
-
+ context['vysledkovka'] = vysledkovka_rocniku(context["rocnik"])
temata_v_rocniku = Problem.objects.filter(typ=Problem.TYP_TEMA, cislo_zadani__rocnik=context['rocnik']).order_by('kod')
context['temata_v_rocniku'] = temata_v_rocniku