Browse Source

Komentare k pocitani vysledkovky

remotes/origin/vysl
Tomas Gavenciak 10 years ago
parent
commit
c75fe27a60
  1. 11
      seminar/views.py

11
seminar/views.py

@ -74,23 +74,31 @@ class CisloView(generic.DetailView):
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = super(CisloView, self).get_context_data(**kwargs) context = super(CisloView, self).get_context_data(**kwargs)
# Vysledky k cislu: seznam objektu typu (cislo, resitel, body [v tom cisle], body_celkem [od zac. rocniku])
vysledky = VysledkyKCislu.objects.filter(cislo = context['cislo']).order_by('-body_celkem').select_related("resitel") vysledky = VysledkyKCislu.objects.filter(cislo = context['cislo']).order_by('-body_celkem').select_related("resitel")
reseni = Reseni.objects.filter(cislo_body = context['cislo']).select_related("resitel") reseni = Reseni.objects.filter(cislo_body = context['cislo']).select_related("resitel")
# seznam problemu s nejakymi body v tomto cisle
problemy = sorted(list(set([r.problem for r in reseni])), key=lambda x:(0 if x.typ==Problem.TYP_ULOHA else 1,x.kod)) problemy = sorted(list(set([r.problem for r in reseni])), key=lambda x:(0 if x.typ==Problem.TYP_ULOHA else 1,x.kod))
# cislo sloupecku pro problem (inverzni funkce)
problem_index = {} problem_index = {}
for i in range(len(problemy)): for i in range(len(problemy)):
problem_index[problemy[i].id] = i problem_index[problemy[i].id] = i
# pomocna mapa Resitel: RadekVysledkovky
vysledky_resitele = {} vysledky_resitele = {}
# radky vysledkovky, seznam objektu RadekVysledkovky
vysledkovka = [] vysledkovka = []
# posledni pocet bodu, pro detekci stejnych mist
posledni_body = 100000 posledni_body = 100000
for vi in range(len(vysledky)): for vi in range(len(vysledky)):
v = vysledky[vi] v = vysledky[vi]
tv = RadekVysledkovky() tv = RadekVysledkovky()
tv.resitel = v.resitel tv.resitel = v.resitel
tv.vysledek = v tv.vysledek = v
tv.body = ['']*len(problemy) tv.body = ['']*len(problemy) # misto pro body za jednotlive uloy
tv.poradi = '' tv.poradi = ''
if posledni_body > v.body_celkem: if posledni_body > v.body_celkem:
posledni_body = v.body_celkem posledni_body = v.body_celkem
@ -98,6 +106,7 @@ class CisloView(generic.DetailView):
vysledky_resitele[v.resitel.id] = tv vysledky_resitele[v.resitel.id] = tv
vysledkovka.append(tv) vysledkovka.append(tv)
# doplneni bodu za jednotliva reseni lidi do RadekVysledkovky.body
for r in reseni: for r in reseni:
vysledky_resitele[r.resitel.id].body[problem_index[r.problem.id]] = r.body vysledky_resitele[r.resitel.id].body[problem_index[r.problem.id]] = r.body

Loading…
Cancel
Save