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