|
|
@ -240,38 +240,16 @@ def hlavni_problem(problem): |
|
|
|
problem = problem.nadproblem |
|
|
|
return problem |
|
|
|
|
|
|
|
def hlavni_problemy_rocniku(rocnik, jen_verejne=True): |
|
|
|
""" Pro zadaný ročník vrátí hlavní problémy ročníku, |
|
|
|
tj. ty, které už nemají nadproblém.""" |
|
|
|
hlavni_problemy = [] |
|
|
|
for cislo in cisla_rocniku(rocnik, jen_verejne): |
|
|
|
for problem in hlavni_problemy_cisla(cislo): |
|
|
|
hlavni_problemy.append(problem) |
|
|
|
hlavni_problemy_set = set(hlavni_problemy) |
|
|
|
hlavni_problemy = list(hlavni_problemy_set) |
|
|
|
hlavni_problemy.sort(key=lambda k:k.kod_v_rocniku) # setřídit podle pořadí |
|
|
|
|
|
|
|
return hlavni_problemy |
|
|
|
def problemy_rocniku(rocnik, jen_verejne=True): |
|
|
|
return m.Problem.objects.filter(hodnoceni__in = m.Hodnoceni.objects.filter(cislo_body__in = cisla_rocniku(rocnik, jen_verejne))).distinct().select_related('nadproblem').select_related('nadproblem__nadproblem') |
|
|
|
|
|
|
|
def problemy_cisla(cislo): |
|
|
|
""" Vrátí seznam všech problémů s body v daném čísle. """ |
|
|
|
return m.Problem.objects.filter(hodnoceni__in = m.Hodnoceni.objects.filter(cislo_body = cislo)).distinct().select_related('nadproblem') |
|
|
|
|
|
|
|
# hodnoceni = cislo.hodnoceni.select_related('problem').all() |
|
|
|
# hodnocení, která se vážou k danému číslu |
|
|
|
|
|
|
|
# problemy = [h.problem for h in hodnoceni] |
|
|
|
# problemy_set = set(problemy) # chceme každý problém unikátně, |
|
|
|
# problemy = (list(problemy_set)) # převedení na množinu a zpět to zaručí |
|
|
|
return m.Problem.objects.filter(hodnoceni__in = m.Hodnoceni.objects.filter(cislo_body = cislo)).distinct().select_related('nadproblem').select_related('nadproblem__nadproblem') |
|
|
|
|
|
|
|
# return problemy |
|
|
|
|
|
|
|
|
|
|
|
def hlavni_problemy_cisla(cislo, problemy=None): |
|
|
|
""" Vrátí seznam všech problémů s body v daném čísle, které již nemají nadproblém. """ |
|
|
|
if problemy is None: |
|
|
|
problemy = problemy_cisla(cislo) |
|
|
|
|
|
|
|
def hlavni_problemy_f(problemy=None): |
|
|
|
""" Vrátí seznam všech problémů, které již nemají nadproblém. """ |
|
|
|
# hlavní problémy čísla |
|
|
|
# (mají vlastní sloupeček ve výsledkovce, nemají nadproblém) |
|
|
|
hlavni_problemy = set() |
|
|
@ -290,7 +268,7 @@ def podproblemy_v_cislu(cislo, problemy=None, hlavni_problemy=None): |
|
|
|
if problemy is None: |
|
|
|
problemy = problemy_cisla(cislo) |
|
|
|
if hlavni_problemy is None: |
|
|
|
hlavni_problemy = hlavni_problemy_cisla(cislo, problemy) |
|
|
|
hlavni_problemy = hlavni_problemy_f(problemy) |
|
|
|
|
|
|
|
podproblemy = dict((hp.id, []) for hp in hlavni_problemy) |
|
|
|
hlavni_problemy = set(hlavni_problemy) |
|
|
|