|
|
@ -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 |
|
|
|
|
|
|
|