From 75cf0e188fcb1dde403433ec72cdac3f5808b7f6 Mon Sep 17 00:00:00 2001 From: Anet Date: Wed, 23 Oct 2019 23:23:54 +0200 Subject: [PATCH] Prepsani pocitani bodu v rocniku, aby se nepouzivaly Nody. --- seminar/views.py | 44 ++++++++++++++------------------------------ 1 file changed, 14 insertions(+), 30 deletions(-) diff --git a/seminar/views.py b/seminar/views.py index 1b540197..383dc3ff 100644 --- a/seminar/views.py +++ b/seminar/views.py @@ -334,15 +334,15 @@ def body_resitele_v_cisle(resitel, cislo): return body_resitele # spočítá součet všech bodů řešitele za daný rok (nebo jen do daného čísla včetně) -def body_resitele_v_rocniku(resitel, rocnik_node, do_cisla=None): +def body_resitele_v_rocniku(resitel, rocnik, do_cisla=None): # pokud do_cisla=None, tak do posledního čísla v ročníku # do_cisla je objekt Cislo - cislo_node = rocnik_node.firstChild + cisla = rocnik.cisla body = 0 - while not (cislo_node == None or cislo_node.cislo == do_cisla.CisloNode.next): + for cislo in cisla: + if cislo == do_cisla: break # druhá část zaručuje, že máme výsledky do daného čísla včetně body = body + body_resitele_v_cisle(resitel, cislo_node.cislo) - cislo_node = cislo_node.next return body #def vysledkovka_rocniku(rocnik, jen_verejne=True): @@ -458,11 +458,14 @@ class VysledkyResitele(object): resitel_jmeno = resitel.osoba.jmeno resitel_prijmeni = resitel.osoba.prijmeni body = {} - body_cislo = 0 + body_rocnik = 0 def body_za_cislo(self): return sum(body.values()) + def body_za_rocnik(self): + return body_rocnik + class CisloView(generic.DetailView): model = Cislo template_name = 'seminar/archiv/cislo.html' @@ -497,37 +500,18 @@ class CisloView(generic.DetailView): #.filter(hodnoceni_set__rocnik__eq=cislo_rocnik) radky_vysledkovky = [] for ar in aktivni_resitele: + # získáme výsledky řešitele - součty přes jednotlivé hlavní problémy vr = VysledkyResitele(ar) - for h in hlavni_problemy: - body = body_resitele_problemu_v_cisle(h, ar, cislo) -# vr.body[h.kod_v_rocniku] = body - vr.body_cislo = vr.body_cislo + body + # ukládání součtu bodů za všechny hlavní problémy => součet bodů za číslo + vr.body_cislo = body_resitele_v_cisle(ar, cislo) + # výpočet bodů za ročník do daného čísla (aby fungovalo i pro starší čísla) + vr.body_rocnik = body_resitele_v_rocniku(ar, cislo.rocnik, cislo) radky_vysledkovky.append(vr) - ## TODO: spočítat počet bodů řešitele v daném ročníku a seřadit je podle toho + ## TODO: seřadit řešitele podle bodů v daném ročníku ## řazení viz fce výše - pochopit a případně přepsat - ## počet bodů udělat ve fce body_resitele_v_rocniku -# vysledky = VysledkyKCisluZaRocnik.objects.filter(cislo = context['cislo']).\ -# order_by('-body', 'resitel__prijmeni', 'resitel__jmeno') -# reseni = Reseni.objects.filter(cislo_body = context['cislo']).select_related("resitel") - - # typy úloh, které se mají zobrazovat u čísla, tj. těch, které byly - # v čísle skutečně zadány -# typy_skutecne_zadanych = [Problem.TYP_ULOHA, Problem.TYP_SERIAL, Problem.TYP_ORG_CLANEK] -# v_cisle_zadane = Problem.objects.filter(cislo_zadani=context['cislo']).filter(typ__in=typy_skutecne_zadanych).order_by('kod') - -# resene_problemy = Problem.objects.filter(cislo_reseni=context['cislo']).filter(typ__in=typy_skutecne_zadanych).order_by('cislo_zadani__cislo', 'kod') -# -# poradi_typu = { -# Problem.TYP_ULOHA: 1, - -# Problem.TYP_SERIAL: 2, -# Problem.TYP_ORG_CLANEK: 3, -# Problem.TYP_TEMA: 4, -# Problem.TYP_RES_CLANEK: 5 -# } # problemy = sorted(set(r.problem for r in reseni), key=lambda x:(poradi_typu[x.typ], x.kod_v_rocniku())) # #setridi problemy podle typu a poradi zadani # problem_index = {}