Browse Source

Prepsani pocitani bodu v rocniku, aby se nepouzivaly Nody.

export_seznamu_prednasek
Anet 5 years ago
parent
commit
75cf0e188f
  1. 44
      seminar/views.py

44
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 = {}

Loading…
Cancel
Save