Fix výsledkovky
This commit is contained in:
parent
41f158768e
commit
0e92bc760b
1 changed files with 36 additions and 51 deletions
|
@ -278,36 +278,29 @@ def secti_body_za_cislo(cislo, aktivni_resitele, hlavni_problemy=None):
|
||||||
slovnik[ar.id] = ""
|
slovnik[ar.id] = ""
|
||||||
|
|
||||||
hlavni_problemy_slovnik[-1][ar.id] = ""
|
hlavni_problemy_slovnik[-1][ar.id] = ""
|
||||||
|
|
||||||
# vezmeme všechna řešení s body do daného čísla
|
|
||||||
reseni_do_cisla = m.Reseni.objects.prefetch_related('problem', 'resitele',
|
|
||||||
'hodnoceni_set').filter(hodnoceni__cislo_body=cislo)
|
|
||||||
|
|
||||||
reseni_do_cisla = set(reseni_do_cisla) # odstranění duplikátů (pokud má řešení více ohodnocení)
|
hodnoceni_do_cisla = m.Hodnoceni.objects.prefetch_related('problem', 'resitele',
|
||||||
|
'hodnoceni_set').filter(cislo_body=cislo)
|
||||||
|
|
||||||
start = time.time()
|
start = time.time()
|
||||||
# projdeme všechna řešení do čísla a přičteme body každému řešiteli do celkových
|
|
||||||
# bodů i do bodů za problém
|
|
||||||
for reseni in reseni_do_cisla:
|
|
||||||
|
|
||||||
# řešení může mít více hodnocení
|
|
||||||
for hodn in list(reseni.hodnoceni_set.all()):
|
|
||||||
prob = hodn.problem
|
|
||||||
nadproblem = hlavni_problem(prob)
|
|
||||||
if ne_clanek_ne_konfera(nadproblem):
|
|
||||||
nadproblem_slovnik = hlavni_problemy_slovnik[nadproblem.id]
|
|
||||||
else:
|
|
||||||
nadproblem_slovnik = hlavni_problemy_slovnik[-1]
|
|
||||||
|
|
||||||
body = hodn.body
|
for hodnoceni in hodnoceni_do_cisla:
|
||||||
|
prob = hodnoceni.problem
|
||||||
|
nadproblem = hlavni_problem(prob)
|
||||||
|
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 řešitelů
|
body = hodnoceni.body
|
||||||
for resitel in list(reseni.resitele.all()):
|
|
||||||
if resitel not in aktivni_resitele:
|
# a mít více řešitelů
|
||||||
print("Skipping {}".format(resitel.id))
|
for resitel in hodnoceni.reseni.resitele.all():
|
||||||
continue
|
if resitel not in aktivni_resitele:
|
||||||
pricti_body(cislobody, resitel, body)
|
print("Skipping {}".format(resitel.id))
|
||||||
pricti_body(nadproblem_slovnik, resitel, body)
|
continue
|
||||||
|
pricti_body(cislobody, resitel, body)
|
||||||
|
pricti_body(nadproblem_slovnik, resitel, body)
|
||||||
end = time.time()
|
end = time.time()
|
||||||
print("for cykly:", end-start)
|
print("for cykly:", end-start)
|
||||||
return hlavni_problemy_slovnik, cislobody
|
return hlavni_problemy_slovnik, cislobody
|
||||||
|
@ -341,35 +334,27 @@ def secti_body_za_cislo_podle_temat(cislo, aktivni_resitele, podproblemy=None, t
|
||||||
|
|
||||||
temata = set(t.id for t in temata)
|
temata = set(t.id for t in temata)
|
||||||
|
|
||||||
# vezmeme všechna řešení s body do daného čísla
|
hodnoceni_do_cisla = m.Hodnoceni.objects.prefetch_related('problem', 'resitele',
|
||||||
reseni_do_cisla = m.Reseni.objects.prefetch_related('problem', 'resitele',
|
'hodnoceni_set').filter(cislo_body=cislo)
|
||||||
'hodnoceni_set').filter(hodnoceni__cislo_body=cislo)
|
|
||||||
|
|
||||||
reseni_do_cisla = set(reseni_do_cisla) # odstranění duplikátů (pokud má řešení více ohodnocení)
|
for hodnoceni in hodnoceni_do_cisla:
|
||||||
|
prob = hodnoceni.problem
|
||||||
|
nadproblem = hlavni_problem(prob)
|
||||||
|
if nadproblem.id in temata:
|
||||||
|
nadproblem_slovnik = body_slovnik[nadproblem.id]
|
||||||
|
else:
|
||||||
|
nadproblem_slovnik = body_slovnik[-1]
|
||||||
|
|
||||||
# projdeme všechna řešení do čísla a přičteme body každému řešiteli do celkových
|
problem_slovnik = nadproblem_slovnik[prob.id]
|
||||||
# bodů i do bodů za problém
|
|
||||||
for reseni in reseni_do_cisla:
|
|
||||||
|
|
||||||
# řešení může mít více hodnocení
|
body = hodnoceni.body
|
||||||
for hodn in list(reseni.hodnoceni_set.all()):
|
|
||||||
prob = hodn.problem
|
|
||||||
nadproblem = hlavni_problem(prob)
|
|
||||||
if nadproblem.id in temata:
|
|
||||||
nadproblem_slovnik = body_slovnik[nadproblem.id]
|
|
||||||
else:
|
|
||||||
nadproblem_slovnik = body_slovnik[-1]
|
|
||||||
|
|
||||||
problem_slovnik = nadproblem_slovnik[prob.id]
|
# a mít více řešitelů
|
||||||
|
for resitel in hodnoceni.reseni.resitele.all():
|
||||||
body = hodn.body
|
if resitel not in aktivni_resitele:
|
||||||
|
print("Skipping {}".format(resitel.id))
|
||||||
# a mít více řešitelů
|
continue
|
||||||
for resitel in reseni.resitele.all():
|
pricti_body(problem_slovnik, resitel, body)
|
||||||
if resitel not in aktivni_resitele:
|
|
||||||
print("Skipping {}".format(resitel.id))
|
|
||||||
continue
|
|
||||||
pricti_body(problem_slovnik, resitel, body)
|
|
||||||
return body_slovnik
|
return body_slovnik
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue