From 8ff70cb5f77feca2efa99698a7f3af53aa99ca8d Mon Sep 17 00:00:00 2001 From: Jonas Havelka Date: Fri, 3 Sep 2021 21:25:53 +0200 Subject: [PATCH] =?UTF-8?q?fix=20v=C3=BDsledkovka=20(v=C3=ADce=20hodnocen?= =?UTF-8?q?=C3=AD=201=20=C5=99e=C5=A1en=C3=AD)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- seminar/views/vysledkovka.py | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/seminar/views/vysledkovka.py b/seminar/views/vysledkovka.py index 86b5d8f1..279e088e 100644 --- a/seminar/views/vysledkovka.py +++ b/seminar/views/vysledkovka.py @@ -282,31 +282,32 @@ def secti_body_za_cislo(cislo, aktivni_resitele, hlavni_problemy=None): # 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í) + 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 řešit více problémů - for prob in list(reseni.problem.all()): + # ř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] - - # a mít více hodnocení - for hodn in list(reseni.hodnoceni_set.all()): - body = hodn.body - - # a mít více řešitelů - for resitel in list(reseni.resitele.all()): - if resitel not in aktivni_resitele: - print("Skipping {}".format(resitel.id)) - continue - pricti_body(cislobody, resitel, body) - pricti_body(nadproblem_slovnik, resitel, body) + + body = hodn.body + + # a mít více řešitelů + for resitel in list(reseni.resitele.all()): + if resitel not in aktivni_resitele: + print("Skipping {}".format(resitel.id)) + continue + pricti_body(cislobody, resitel, body) + pricti_body(nadproblem_slovnik, resitel, body) end = time.time() print("for cykly:", end-start) return hlavni_problemy_slovnik, cislobody