Výsledkovka ostatní - Tohle by mělo fungovat, ale isinstance nefunguje
This commit is contained in:
parent
efdd32427e
commit
bc3913d4b0
2 changed files with 36 additions and 4 deletions
|
@ -76,6 +76,7 @@
|
|||
{% for p in problemy %}
|
||||
<th class='border-r'><a href="{{ p.verejne_url }}">{{ p.kod_v_rocniku }}</a>
|
||||
{% endfor %}
|
||||
{% if ostatni %}<th class='border-r'>Ostatní {% endif %}
|
||||
<th class='border-r'>Za číslo
|
||||
<th class='border-r'>Za ročník
|
||||
<th class='border-r'>Odjakživa
|
||||
|
|
|
@ -989,18 +989,30 @@ 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',
|
||||
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue