From d16cb935f75aac83cd21b332179e8c9269190638 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C4=9Bj=20Koci=C3=A1n?= Date: Sun, 27 Sep 2015 22:40:25 +0200 Subject: [PATCH] =?UTF-8?q?V=C3=BDsledkovky=20s=20neve=C5=99ejn=C3=BDmi=20?= =?UTF-8?q?body=20v=20zad=C3=A1n=C3=AD/v=C3=BDsledky?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit a v ročníku --- seminar/templates/seminar/archiv/rocnik.html | 9 ++++++ .../templates/seminar/vysledkovka_rocnik.html | 6 ++-- .../seminar/zadani/AktualniVysledkovka.html | 10 ++++++ seminar/views.py | 31 +++++++++++++------ 4 files changed, 43 insertions(+), 13 deletions(-) diff --git a/seminar/templates/seminar/archiv/rocnik.html b/seminar/templates/seminar/archiv/rocnik.html index baa5e09d..8fcc01cd 100644 --- a/seminar/templates/seminar/archiv/rocnik.html +++ b/seminar/templates/seminar/archiv/rocnik.html @@ -33,6 +33,15 @@ {% include "seminar/vysledkovka_rocnik.html" %} {% endif %} + {% if user.is_staff and vysledkovka_s_neverejnymi %} +
+

Výsledková listina včetně neveřejných bodů

+ {% with vysledkovka_s_neverejnymi as vysledkovka %} + {% include "seminar/vysledkovka_rocnik.html" %} + {% endwith %} +
+ {% endif %} + {% endblock content %} diff --git a/seminar/templates/seminar/vysledkovka_rocnik.html b/seminar/templates/seminar/vysledkovka_rocnik.html index 91e1d8ca..f1dc1d79 100644 --- a/seminar/templates/seminar/vysledkovka_rocnik.html +++ b/seminar/templates/seminar/vysledkovka_rocnik.html @@ -4,15 +4,13 @@ Jméno R. Odjakživa - {% for c in rocnik.verejna_cisla %} - {% if c.verejna_vysledkovka %} + {% for c in vysledkovka.cisla %} {{c.rocnik.rocnik}}.{{ c.cislo }} - {% endif %} {% endfor %} Celkem -{% for rv in vysledkovka %} +{% for rv in vysledkovka.radky %} {% autoescape off %}{{ rv.poradi }}{% endautoescape %} diff --git a/seminar/templates/seminar/zadani/AktualniVysledkovka.html b/seminar/templates/seminar/zadani/AktualniVysledkovka.html index c8943fec..9996b567 100644 --- a/seminar/templates/seminar/zadani/AktualniVysledkovka.html +++ b/seminar/templates/seminar/zadani/AktualniVysledkovka.html @@ -21,5 +21,15 @@ {% else %} V tomto ročníku zatím žádné výsledky nejsou {% endif %} + + {% if user.is_staff and vysledkovka_s_neverejnymi %} +
+

Výsledky včetně neveřejných

+ {% with vysledkovka_s_neverejnymi as vysledkovka %} + {% include "seminar/vysledkovka_rocnik.html" %} + {% endwith %} +
+ {% endif %} + {% endwith %} {% endblock content %} diff --git a/seminar/views.py b/seminar/views.py index 46dc0c1d..59590bbf 100644 --- a/seminar/views.py +++ b/seminar/views.py @@ -45,10 +45,12 @@ def ZadaniTemataView(request): def ZadaniAktualniVysledkovkaView(request): nastaveni = get_object_or_404(Nastaveni) vysledkovka = vysledkovka_rocniku(nastaveni.aktualni_rocnik) + vysledkovka_s_neverejnymi = vysledkovka_rocniku(nastaveni.aktualni_rocnik, jen_verejne=False) return render(request, 'seminar/zadani/AktualniVysledkovka.html', { 'nastaveni': nastaveni, 'vysledkovka': vysledkovka, + 'vysledkovka_s_neverejnymi': vysledkovka_s_neverejnymi, } ) @@ -126,29 +128,39 @@ def sloupec_s_poradim(vysledky): return poradi_l -def vysledkovka_rocniku(rocnik): +def vysledkovka_rocniku(rocnik, jen_verejne=True): """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') + #vyberu vsechny vysledky z rocniku + cisla_v_rocniku = VysledkyKCisluZaRocnik.objects.filter(cislo__rocnik=rocnik).order_by('cislo') + if jen_verejne: + cisla_v_rocniku = cisla_v_rocniku.filter(cislo__verejna_vysledkovka=True) #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 + #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 = [] + class Vysledkovka: + def __init__(self): + self.radky = [] + self.cisla = [] + + vysledkovka = Vysledkovka() + vysledkovka.cisla = (rocnik.verejne_vysledkovky_cisla() if jen_verejne else rocnik.cisla.all().order_by('cislo')) # 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) + verejne_vysl_odjakziva = VysledkyKCisluOdjakziva.objects.filter(cislo__rocnik=rocnik, cislo=cisla_v_rocniku[0].cislo) + if jen_verejne: + verejne_vysl_odjakziva = verejne_vysl_odjakziva.filter(cislo__verejna_vysledkovka=True) v.body_odjakziva = verejne_vysl_odjakziva.filter(resitel = v.resitel)[0].body v.titul = v.resitel.get_titul(v.body_odjakziva) @@ -156,8 +168,8 @@ def vysledkovka_rocniku(rocnik): 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: + for cis in vysledkovka.cisla: + if not jen_verejne or 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) @@ -168,7 +180,7 @@ def vysledkovka_rocniku(rocnik): #resitel nema za cislo body v.body_cisla.append(0) - vysledkovka.append(v) + vysledkovka.radky.append(v) return vysledkovka @@ -195,6 +207,7 @@ class RocnikView(generic.DetailView): context = super(RocnikView, self).get_context_data(**kwargs) context['vysledkovka'] = vysledkovka_rocniku(context["rocnik"]) + context['vysledkovka_s_neverejnymi'] = vysledkovka_rocniku(context["rocnik"], jen_verejne=False) context['temata_v_rocniku'] = verejna_temata(context["rocnik"]) return context