Browse Source

fix výsledkovka (více hodnocení 1 řešení)

middleware_test
Jonas Havelka 3 years ago
parent
commit
8ff70cb5f7
  1. 25
      seminar/views/vysledkovka.py

25
seminar/views/vysledkovka.py

@ -283,30 +283,31 @@ def secti_body_za_cislo(cislo, aktivni_resitele, hlavni_problemy=None):
reseni_do_cisla = m.Reseni.objects.prefetch_related('problem', 'resitele', reseni_do_cisla = m.Reseni.objects.prefetch_related('problem', 'resitele',
'hodnoceni_set').filter(hodnoceni__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í)
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 # 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 # bodů i do bodů za problém
for reseni in reseni_do_cisla: for reseni in reseni_do_cisla:
# řešení může řešit více problémů # řešení může mít více hodnocení
for prob in list(reseni.problem.all()): for hodn in list(reseni.hodnoceni_set.all()):
prob = hodn.problem
nadproblem = hlavni_problem(prob) nadproblem = hlavni_problem(prob)
if ne_clanek_ne_konfera(nadproblem): if ne_clanek_ne_konfera(nadproblem):
nadproblem_slovnik = hlavni_problemy_slovnik[nadproblem.id] nadproblem_slovnik = hlavni_problemy_slovnik[nadproblem.id]
else: else:
nadproblem_slovnik = hlavni_problemy_slovnik[-1] nadproblem_slovnik = hlavni_problemy_slovnik[-1]
# a mít více hodnocení body = hodn.body
for hodn in list(reseni.hodnoceni_set.all()):
body = hodn.body
# a mít více řešitelů # a mít více řešitelů
for resitel in list(reseni.resitele.all()): for resitel in list(reseni.resitele.all()):
if resitel not in aktivni_resitele: if resitel not in aktivni_resitele:
print("Skipping {}".format(resitel.id)) print("Skipping {}".format(resitel.id))
continue continue
pricti_body(cislobody, resitel, body) pricti_body(cislobody, resitel, body)
pricti_body(nadproblem_slovnik, 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

Loading…
Cancel
Save