From 65e306f31600ef6b65cfff7900f914886d6c0414 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C4=9Bj=20Koci=C3=A1n?= Date: Mon, 7 Sep 2015 15:24:58 +0200 Subject: [PATCH] =?UTF-8?q?Nezobrazuj=20v=C3=BDsledky=20u=20ro=C4=8Dn?= =?UTF-8?q?=C3=ADku,=20pokud=20=C5=BE=C3=A1dn=C3=A9=20nejsou?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit jinak byl index out of range --- seminar/templates/seminar/archiv/rocnik.html | 58 ++++----- seminar/views.py | 124 ++++++++++--------- 2 files changed, 93 insertions(+), 89 deletions(-) diff --git a/seminar/templates/seminar/archiv/rocnik.html b/seminar/templates/seminar/archiv/rocnik.html index aab1f2ec..9aa8cacc 100644 --- a/seminar/templates/seminar/archiv/rocnik.html +++ b/seminar/templates/seminar/archiv/rocnik.html @@ -12,34 +12,36 @@ {% endfor %} -

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 %} -
{{ rv.poradi }} - {{ rv.resitel.titul }} MM {{ rv.resitel.plne_jmeno }} - {{ rv.resitel.rocnik }} - {{ rv.body_odjakziva }} - {% for b in rv.body %} - {{ b }} - {% endfor %} - {{ rv.body_rocnik }} -
+ {% 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 %} +
{{ rv.poradi }} + {{ rv.resitel.titul }} MM {{ rv.resitel.plne_jmeno }} + {{ rv.resitel.rocnik }} + {{ rv.body_odjakziva }} + {% for b in rv.body %} + {{ b }} + {% endfor %} + {{ rv.body_rocnik }} +
+ {% endif %} {% endblock content %} diff --git a/seminar/views.py b/seminar/views.py index 9025ff84..0a3d286e 100644 --- a/seminar/views.py +++ b/seminar/views.py @@ -87,69 +87,71 @@ class RocnikView(generic.DetailView): cisla_v_rocniku = VysledkyKCisluZaRocnik.objects.filter(cislo__verejna_vysledkovka = True).filter(cislo__rocnik = context['rocnik']).order_by('-cislo') #vyberu vsechny verejne vysledky z rocniku - vysledky = 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 - vysledky_resitele = {} - stejne_body = {} - konec_rozmezi = {} - vysledkovka = [] - posledni_body = 100000 - predchozi_poradi = None - body_minule = None - - for vi in range(len(vysledky)): - v = vysledky[vi] - rv = RadekVysledkovky() - rv.resitel = v.resitel - verejne_vysl_odjakziva = VysledkyKCisluOdjakziva.objects.filter(cislo__verejna_vysledkovka = True).filter(cislo__rocnik = context['rocnik']).filter(cislo = cisla_v_rocniku[0].cislo) - rv.body_odjakziva = verejne_vysl_odjakziva.filter(resitel = rv.resitel)[0].body - rv.resitel.titul = rv.resitel.get_titul(rv.body_odjakziva) - rv.resitel.rocnik = rv.resitel.rocnik(context['rocnik']) - rv.body = []*len(context['rocnik'].verejna_cisla()) - #pokud pro dany rok a cislo nema resitel vysledky, ma defaultne 0 - for cis in context['rocnik'].verejna_cisla(): - if cis.verejna_vysledkovka: - print cis - body_za_cislo = VysledkyZaCislo.objects.filter(cislo__rocnik = context['rocnik']).filter(cislo = cis).filter(resitel = rv.resitel) - #seznam vysledku se spravnym rocnikem a cislem pro resitele - #zobrazim jen je-li vysledkovka verejna - if body_za_cislo: - rv.body.append(body_za_cislo[0].body) - #neprazdne vysledky by mely obsahovat prave jeden vysledek + #pokud žádné nejsou, výsledkovka se nezobrazí + if cisla_v_rocniku: + vysledky = 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 + vysledky_resitele = {} + stejne_body = {} + konec_rozmezi = {} + vysledkovka = [] + posledni_body = 100000 + predchozi_poradi = None + body_minule = None + + for vi in range(len(vysledky)): + v = vysledky[vi] + rv = RadekVysledkovky() + rv.resitel = v.resitel + verejne_vysl_odjakziva = VysledkyKCisluOdjakziva.objects.filter(cislo__verejna_vysledkovka = True).filter(cislo__rocnik = context['rocnik']).filter(cislo = cisla_v_rocniku[0].cislo) + rv.body_odjakziva = verejne_vysl_odjakziva.filter(resitel = rv.resitel)[0].body + rv.resitel.titul = rv.resitel.get_titul(rv.body_odjakziva) + rv.resitel.rocnik = rv.resitel.rocnik(context['rocnik']) + rv.body = []*len(context['rocnik'].verejna_cisla()) + #pokud pro dany rok a cislo nema resitel vysledky, ma defaultne 0 + for cis in context['rocnik'].verejna_cisla(): + if cis.verejna_vysledkovka: + print cis + body_za_cislo = VysledkyZaCislo.objects.filter(cislo__rocnik = context['rocnik']).filter(cislo = cis).filter(resitel = rv.resitel) + #seznam vysledku se spravnym rocnikem a cislem pro resitele + #zobrazim jen je-li vysledkovka verejna + if body_za_cislo: + rv.body.append(body_za_cislo[0].body) + #neprazdne vysledky by mely obsahovat prave jeden vysledek + else: + rv.body.append(0) + #resitel nema za cislo body + rv.poradi = '' + #defaultni poradi je prazdne - kvuli sdilenym mistum + rv.body_rocnik = v.body + rv.body_na_zacatku = rv.body_odjakziva - rv.body_rocnik + #body za minule rocniky + if posledni_body > v.body: + if stejne_body.get(posledni_body): + #pokud uz jsme predtim narazili na stejny pocet bodu + konec_rozmezi[posledni_body] = int(predchozi_poradi.poradi) + stejne_body[posledni_body] + #druha hranice sdilenych pozic - zacatek + pocet lidi se stejnymi body + predchozi_poradi.poradi = '{0}. -- {1}.'.format(predchozi_poradi.poradi,konec_rozmezi[posledni_body]) + #predchozi radek ktery menil pocty bodu bude mit rozsah, pokud bylo vice radku se stejnym poctem bodu + elif predchozi_poradi : + predchozi_poradi.poradi = '{0}.'.format(predchozi_poradi.poradi) + #pokud nebyl rozsah hodnot, vypisu, pridam tecku za cislo + posledni_body = v.body + rv.poradi = vi + 1 + #poradi se meni jen u resitele s rozdilnym poctem bodu nez mel minuly + predchozi_poradi = rv + elif posledni_body == v.body: + if not stejne_body.get(v.body): + stejne_body[v.body] = 1 + #pokud klic neexistuje, zalozim novy pro tohoto resitele else: - rv.body.append(0) - #resitel nema za cislo body - rv.poradi = '' - #defaultni poradi je prazdne - kvuli sdilenym mistum - rv.body_rocnik = v.body - rv.body_na_zacatku = rv.body_odjakziva - rv.body_rocnik - #body za minule rocniky - if posledni_body > v.body: - if stejne_body.get(posledni_body): - #pokud uz jsme predtim narazili na stejny pocet bodu - konec_rozmezi[posledni_body] = int(predchozi_poradi.poradi) + stejne_body[posledni_body] - #druha hranice sdilenych pozic - zacatek + pocet lidi se stejnymi body - predchozi_poradi.poradi = '{0}. -- {1}.'.format(predchozi_poradi.poradi,konec_rozmezi[posledni_body]) - #predchozi radek ktery menil pocty bodu bude mit rozsah, pokud bylo vice radku se stejnym poctem bodu - elif predchozi_poradi : - predchozi_poradi.poradi = '{0}.'.format(predchozi_poradi.poradi) - #pokud nebyl rozsah hodnot, vypisu, pridam tecku za cislo - posledni_body = v.body - rv.poradi = vi + 1 - #poradi se meni jen u resitele s rozdilnym poctem bodu nez mel minuly - predchozi_poradi = rv - elif posledni_body == v.body: - if not stejne_body.get(v.body): - stejne_body[v.body] = 1 - #pokud klic neexistuje, zalozim novy pro tohoto resitele - else: - stejne_body[v.body] += 1 - #rozsirim pocet resitelu sdilejici stejnou pozici - vysledky_resitele[v.resitel.id] = rv - #odkaz na radek vysledkovky patrici danemu resiteli - vysledkovka.append(rv) + stejne_body[v.body] += 1 + #rozsirim pocet resitelu sdilejici stejnou pozici + vysledky_resitele[v.resitel.id] = rv + #odkaz na radek vysledkovky patrici danemu resiteli + vysledkovka.append(rv) - context['vysledkovka'] = vysledkovka + context['vysledkovka'] = vysledkovka return context class ProblemView(generic.DetailView):