From c75fe27a60d9f5d0f4b4931f76cf5b7a6dc4d8b7 Mon Sep 17 00:00:00 2001 From: Tomas Gavenciak Date: Fri, 3 Jul 2015 17:55:39 +0200 Subject: [PATCH] Komentare k pocitani vysledkovky --- seminar/views.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/seminar/views.py b/seminar/views.py index 46e1390a..12fc1650 100644 --- a/seminar/views.py +++ b/seminar/views.py @@ -74,23 +74,31 @@ class CisloView(generic.DetailView): def get_context_data(self, **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") + 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)) + # cislo sloupecku pro problem (inverzni funkce) problem_index = {} for i in range(len(problemy)): problem_index[problemy[i].id] = i + # pomocna mapa Resitel: RadekVysledkovky vysledky_resitele = {} + # radky vysledkovky, seznam objektu RadekVysledkovky vysledkovka = [] + # posledni pocet bodu, pro detekci stejnych mist posledni_body = 100000 + for vi in range(len(vysledky)): v = vysledky[vi] tv = RadekVysledkovky() tv.resitel = v.resitel tv.vysledek = v - tv.body = ['']*len(problemy) + tv.body = ['']*len(problemy) # misto pro body za jednotlive uloy tv.poradi = '' if posledni_body > v.body_celkem: posledni_body = v.body_celkem @@ -98,6 +106,7 @@ class CisloView(generic.DetailView): vysledky_resitele[v.resitel.id] = tv vysledkovka.append(tv) + # doplneni bodu za jednotliva reseni lidi do RadekVysledkovky.body for r in reseni: vysledky_resitele[r.resitel.id].body[problem_index[r.problem.id]] = r.body