From 0d68c40c73f68bdac7b0a53d0b6b367c9e21befe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C4=9Bj=20Koci=C3=A1n?= Date: Wed, 23 Sep 2015 17:28:14 +0200 Subject: [PATCH] =?UTF-8?q?Zad=C3=A1n=C3=AD:=20aktu=C3=A1ln=C3=AD=20v?= =?UTF-8?q?=C3=BDsledkovka?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- seminar/templates/seminar/archiv/rocnik.html | 34 +------ .../templates/seminar/vysledkovka_rocnik.html | 31 ++++++ .../seminar/zadani/AktualniVysledkovka.html | 19 ++++ seminar/urls.py | 1 + seminar/views.py | 97 +++++++++++-------- 5 files changed, 112 insertions(+), 70 deletions(-) create mode 100644 seminar/templates/seminar/vysledkovka_rocnik.html create mode 100644 seminar/templates/seminar/zadani/AktualniVysledkovka.html 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

- - - - - {% endfor %} -
# - 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 }} -
+

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 @@ + + + + +{% endfor %} +
# + 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 }} +
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