|
|
@ -989,19 +989,31 @@ def secti_body_za_cislo(cislo, aktivni_resitele, hlavni_problemy=None): |
|
|
|
if hlavni_problemy is None: |
|
|
|
hlavni_problemy = hlavni_problemy_cisla(cislo) |
|
|
|
|
|
|
|
def ne_clanek_ne_konfera(problem): |
|
|
|
return not(isinstance(problem, m.Clanek) or isinstance(problem, m.Konfera)) |
|
|
|
|
|
|
|
temata_a_spol = list(filter(ne_clanek_ne_konfera, hlavni_problemy)) |
|
|
|
|
|
|
|
def cosi(problem): |
|
|
|
return problem.id |
|
|
|
|
|
|
|
hlavni_problemy_slovnik = {} |
|
|
|
for hp in hlavni_problemy: |
|
|
|
for hp in temata_a_spol: |
|
|
|
hlavni_problemy_slovnik[hp.id] = {} |
|
|
|
|
|
|
|
hlavni_problemy_slovnik[-1] = {} |
|
|
|
|
|
|
|
# zakládání prázdných záznamů pro řešitele |
|
|
|
cislobody = {} |
|
|
|
for ar in aktivni_resitele: |
|
|
|
# řešitele převedeme na řetězec pomocí unikátního id |
|
|
|
cislobody[ar.id] = "" |
|
|
|
for hp in hlavni_problemy: |
|
|
|
for hp in temata_a_spol: |
|
|
|
slovnik = hlavni_problemy_slovnik[hp.id] |
|
|
|
slovnik[ar.id] = "" |
|
|
|
|
|
|
|
hlavni_problemy_slovnik[-1][ar.id] = "" |
|
|
|
|
|
|
|
# vezmeme všechna řešení s body do daného čísla |
|
|
|
reseni_do_cisla = Reseni.objects.prefetch_related('problem', 'resitele', |
|
|
|
'hodnoceni_set').filter(hodnoceni__cislo_body=cislo) |
|
|
@ -1013,7 +1025,10 @@ def secti_body_za_cislo(cislo, aktivni_resitele, hlavni_problemy=None): |
|
|
|
# řešení může řešit více problémů |
|
|
|
for prob in list(reseni.problem.all()): |
|
|
|
nadproblem = hlavni_problem(prob) |
|
|
|
nadproblem_slovnik = hlavni_problemy_slovnik[nadproblem.id] |
|
|
|
if ne_clanek_ne_konfera(nadproblem): |
|
|
|
nadproblem_slovnik = hlavni_problemy_slovnik[nadproblem.id] |
|
|
|
else: |
|
|
|
nadproblem_slovnik = hlavni_problemy_slovnik[-1] |
|
|
|
|
|
|
|
# a mít více hodnocení |
|
|
|
for hodn in list(reseni.hodnoceni_set.all()): |
|
|
@ -1058,11 +1073,26 @@ def vysledkovka_cisla(cislo, context=None): |
|
|
|
# vytvoříme jednotlivé sloupce výsledkovky |
|
|
|
radky_vysledkovky = [] |
|
|
|
i = 0 |
|
|
|
|
|
|
|
def ne_clanek_ne_konfera(problem): |
|
|
|
return not(isinstance(problem, m.Clanek) or isinstance(problem, m.Konfera)) |
|
|
|
|
|
|
|
temata_a_spol = list(filter(ne_clanek_ne_konfera, hlavni_problemy)) |
|
|
|
|
|
|
|
# def not_empty(value): |
|
|
|
# return value != '' |
|
|
|
# |
|
|
|
# je_nejake_ostatni = any(filter(not_empty, hlavni_problemy_slovnik[-1].values())) > 0 |
|
|
|
|
|
|
|
je_nejake_ostatni = len(hlavni_problemy) - len(temata_a_spol) > 0 |
|
|
|
|
|
|
|
for ar_id in setrizeni_resitele_id: |
|
|
|
# získáme seznam bodů za problémy pro daného řešitele |
|
|
|
problemy = [] |
|
|
|
for hp in hlavni_problemy: |
|
|
|
for hp in temata_a_spol: |
|
|
|
problemy.append(hlavni_problemy_slovnik[hp.id][ar_id]) |
|
|
|
if je_nejake_ostatni: |
|
|
|
problemy.append(hlavni_problemy_slovnik[-1][ar_id]) |
|
|
|
# vytáhneme informace pro daného řešitele |
|
|
|
radek = RadekVysledkovkyCisla( |
|
|
|
poradi[i], # pořadí |
|
|
@ -1079,6 +1109,7 @@ def vysledkovka_cisla(cislo, context=None): |
|
|
|
context['cislo'] = cislo |
|
|
|
context['radky_vysledkovky'] = radky_vysledkovky |
|
|
|
context['problemy'] = hlavni_problemy |
|
|
|
context['ostatni'] = je_nejake_ostatni |
|
|
|
#context['v_cisle_zadane'] = TODO |
|
|
|
#context['resene_problemy'] = resene_problemy |
|
|
|
return context |
|
|
|