diff --git a/seminar/models.py b/seminar/models.py
index c484abb8..59d3f4a7 100644
--- a/seminar/models.py
+++ b/seminar/models.py
@@ -221,7 +221,7 @@ class Resitel(SeminarModelBase):
else:
return 'Z' + str(rozdil + 9)
- def titul(self, celkove_body):
+ def get_titul(self, celkove_body):
"Vrati titul podle zadaneho poctu bodu."
if celkove_body < 10:
return ''
diff --git a/seminar/templates/seminar/archiv/cislo.html b/seminar/templates/seminar/archiv/cislo.html
index d14073e6..90018ab9 100644
--- a/seminar/templates/seminar/archiv/cislo.html
+++ b/seminar/templates/seminar/archiv/cislo.html
@@ -35,18 +35,18 @@
{{ p.cislo_zadani.cislo }}.{{ p.kod }}
{% endfor %}
| Sum-1
- | Celkem
- | Odjakživa
+ | Celkem
+ | Odjakživa
{% for rv in vysledkovka %}
|
{{ rv.poradi }}
- | {{ rv.resitel.plne_jmeno }} {{ rv.titul }}
+ | {{ rv.titul }} MM {{ rv.resitel.plne_jmeno }}
{% for b in rv.body %}
| {{ b }}
{% endfor %}
| {{ rv.body_minule }}
- | {{ rv.body_celkem_rocnik }}
- | {{ rv.body_celkem_odjakziva }}
+ | {{ rv.body_celkem_rocnik }}
+ | {{ rv.body_celkem_odjakziva }}
|
{% endfor %}
diff --git a/seminar/templates/seminar/archiv/rocnik.html b/seminar/templates/seminar/archiv/rocnik.html
index 329941e8..cc42ff81 100644
--- a/seminar/templates/seminar/archiv/rocnik.html
+++ b/seminar/templates/seminar/archiv/rocnik.html
@@ -12,6 +12,38 @@
{% endfor %}
+ Výsledkovka
+
+
+ #
+ | Jméno
+ | R.
+ | Odjakživa
+ {% for c in rocnik.verejna_cisla %}
+ {% if c.verejna_vysledkovka %}
+ |
+ {{c.rocnik.rocnik}}.{{ c.cislo }}
+ {% endif %}
+ {% endfor %}
+ | Celkem
+
+ {% for rv in vysledkovka %}
+ |
+ {{ rv.poradi }}
+ | {{ rv.resitel.titul }} MM {{ rv.resitel.plne_jmeno }}
+ | {{ rv.resitel.rocnik }}
+ | {{ rv.body_odjakziva }}
+ {% for b in rv.body %}
+ | {{ b }}
+ {% endfor %}
+ | {{ rv.body_rocnik }}
+ |
+ {% endfor %}
+
+
{% endblock content %}
+
+
+
diff --git a/seminar/views.py b/seminar/views.py
index 8bb5949d..bdc5861b 100644
--- a/seminar/views.py
+++ b/seminar/views.py
@@ -49,15 +49,11 @@ class RocnikView(generic.DetailView):
def get_context_data(self, **kwargs):
context = super(RocnikView, self).get_context_data(**kwargs)
- vysledkyCelkem = VysledkyCelkemKCislu.objects.all().order_by('-body_celkem').select_related("resitel")
- # vysledkyCisla = VysledkyKCislu.objects.filter(cislo.rocnik = context[])
-
- problemy = sorted(list(set([r.problem for r in reseni])), key=lambda x:(0 if x.typ==Problem.TYP_ULOHA else 1,x.kod))
- #setridi problemy podle typu a poradi zadani
- problem_index = {}
- for i in range(len(problemy)):
- problem_index[problemy[i].id] = i
- #umoznuje zjistit index podle id problemu
+ cisla_v_rocniku = VysledkyKCisluZaRocnik.objects.filter(cislo__verejna_vysledkovka = True).filter(cislo__rocnik = context['rocnik']).order_by('-cislo')
+ #vyberu vsechny verejne vysledky z rocniku
+ vysledky = cisla_v_rocniku.filter(cislo = cisla_v_rocniku[0].cislo).order_by('-body', 'resitel__prijmeni', 'resitel__jmeno').select_related('resitel')
+ #vybere vsechny vysledky z posledniho verejneho cisla a setridi sestupne dle bodu
+ # cisla = Cislo.objects.all().filter(rocnik.id = context['rocnik'].id).order_by('+cislo')
vysledky_resitele = {}
stejne_body = {}
@@ -69,54 +65,65 @@ class RocnikView(generic.DetailView):
for vi in range(len(vysledky)):
v = vysledky[vi]
- tv = RadekVysledkovky()
- tv.resitel = v.resitel
- tv.rocnik = tv.resitel.rocnik(context['cislo'].datum_vydani)
- tv.resitel.titul = tv.resitel.titul(v.body_celkem)
- tv.vysledek = v
- #odkazuje na VysledkyKCislu
- tv.body = ['']*len(problemy)
- #pole bodu za ulohy
- tv.poradi = ''
+ rv = RadekVysledkovky()
+ rv.resitel = v.resitel
+ verejne_vysl_odjakziva = VysledkyKCisluOdjakziva.objects.filter(cislo__verejna_vysledkovka = True).filter(cislo__rocnik = context['rocnik']).filter(cislo = cisla_v_rocniku[0].cislo)
+ rv.body_odjakziva = verejne_vysl_odjakziva.filter(resitel = rv.resitel)[0].body
+ rv.resitel.titul = rv.resitel.get_titul(rv.body_odjakziva)
+ rv.resitel.rocnik = rv.resitel.rocnik(context['rocnik'])
+ rv.body = []*len(context['rocnik'].verejna_cisla())
+ #pokud pro dany rok a cislo nema resitel vysledky, ma defaultne 0
+ for cis in context['rocnik'].verejna_cisla():
+ if cis.verejna_vysledkovka:
+ print cis
+ body_za_cislo = VysledkyZaCislo.objects.filter(cislo__rocnik = context['rocnik']).filter(cislo = cis).filter(resitel = rv.resitel)
+ #seznam vysledku se spravnym rocnikem a cislem pro resitele
+ #zobrazim jen je-li vysledkovka verejna
+ if body_za_cislo:
+ rv.body.append(body_za_cislo[0].body)
+ #neprazdne vysledky by mely obsahovat prave jeden vysledek
+ else:
+ rv.body.append(0)
+ #resitel nema za cislo body
+ rv.poradi = ''
#defaultni poradi je prazdne - kvuli sdilenym mistum
- tv.body_minule = 0
- #pocet bodu do tohoto cisla
- if posledni_body > v.body_celkem:
+ rv.body_rocnik = v.body
+ rv.body_na_zacatku = rv.body_odjakziva - rv.body_rocnik
+ #body za minule rocniky
+ if posledni_body > v.body:
if stejne_body.get(posledni_body):
+ #pokud uz jsme predtim narazili na stejny pocet bodu
konec_rozmezi[posledni_body] = int(predchozi_poradi.poradi) + stejne_body[posledni_body]
#druha hranice sdilenych pozic - zacatek + pocet lidi se stejnymi body
predchozi_poradi.poradi = '{0}. -- {1}.'.format(predchozi_poradi.poradi,konec_rozmezi[posledni_body])
#predchozi radek ktery menil pocty bodu bude mit rozsah, pokud bylo vice radku se stejnym poctem bodu
elif predchozi_poradi :
predchozi_poradi.poradi = '{0}.'.format(predchozi_poradi.poradi)
- #pokud nebyl rozsah hodnot, pridam tecku za cislo
- posledni_body = v.body_celkem
- tv.poradi = vi + 1
+ #pokud nebyl rozsah hodnot, vypisu, pridam tecku za cislo
+ posledni_body = v.body
+ rv.poradi = vi + 1
#poradi se meni jen u resitele s rozdilnym poctem bodu nez mel minuly
- predchozi_poradi = tv
- elif posledni_body == v.body_celkem:
- if not stejne_body.get(v.body_celkem):
- stejne_body[v.body_celkem] = 1
+ predchozi_poradi = rv
+ elif posledni_body == v.body:
+ if not stejne_body.get(v.body):
+ stejne_body[v.body] = 1
#pokud klic neexistuje, zalozim novy pro tohoto resitele
else:
- stejne_body[v.body_celkem] += 1
+ stejne_body[v.body] += 1
#rozsirim pocet resitelu sdilejici stejnou pozici
- vysledky_resitele[v.resitel.id] = tv
+ vysledky_resitele[v.resitel.id] = rv
#odkaz na radek vysledkovky patrici danemu resiteli
- vysledkovka.append(tv)
+ vysledkovka.append(rv)
- for r in reseni:
+ context['vysledkovka'] = vysledkovka
+ return context
+''' for r in reseni:
vysledky_resitele[r.resitel.id].body[problem_index[r.problem.id]] = r.body
body_za_cislo = vysledky_resitele[r.resitel.id].vysledek.body
#body za toto cislo, stejne jako tv.vysledek.body
body_celkem = vysledky_resitele[r.resitel.id].vysledek.body_celkem
vysledky_resitele[r.resitel.id].body_minule = body_celkem - body_za_cislo
-
-
- context['vysledkovka'] = vysledkovka
- context['problemy'] = problemy
- return context
-
+ '''
class ProblemView(generic.DetailView):
model = Problem
@@ -147,7 +154,7 @@ class CisloView(generic.DetailView):
def get_context_data(self, **kwargs):
context = super(CisloView, self).get_context_data(**kwargs)
- vysledky = VysledkyKCisluZaRocnik.objects.filter(cislo = context['cislo']).order_by('-body').select_related("resitel")
+ 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")
problemy = sorted(list(set([r.problem for r in reseni])), key=lambda x:(0 if x.typ==Problem.TYP_ULOHA else 1,x.kod))
@@ -169,7 +176,7 @@ class CisloView(generic.DetailView):
v = vysledky[vi]
tv = RadekVysledkovky()
tv.resitel = v.resitel
- tv.resitel.titul = tv.resitel.titul(v.body_celkem)
+ tv.resitel.titul = tv.resitel.get_titul(v.body)
tv.rocnik = tv.resitel.rocnik(context['cislo'].rocnik)
tv.vysledek = v
#odkazuje na VysledkyKCislu
@@ -182,7 +189,7 @@ class CisloView(generic.DetailView):
body_cislo_q = VysledkyZaCislo.objects.filter(resitel=v.resitel, cislo=context['cislo'])
tv.body_cislo = body_cislo_q[0].body if len(body_cislo_q) > 0 else 0
tv.body_minule = tv.body_celkem_rocnik - tv.body_cislo
- tv.titul = tv.resitel.titul(tv.body_celkem_odjakziva)
+ tv.titul=tv.resitel.get_titul(int(tv.body_celkem_odjakziva))
#pocet bodu do tohoto cisla
if posledni_body > tv.body_celkem_rocnik:
if stejne_body.get(posledni_body):