Prepsani pocitani bodu v rocniku, aby se nepouzivaly Nody.
This commit is contained in:
parent
430d696c35
commit
75cf0e188f
1 changed files with 14 additions and 30 deletions
|
@ -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 = {}
|
||||
|
|
Loading…
Reference in a new issue