diff --git a/seminar/models.py b/seminar/models.py
index 82b09944..83a9ea61 100644
--- a/seminar/models.py
+++ b/seminar/models.py
@@ -304,9 +304,10 @@ class Resitel(SeminarModelBase):
return sum(h.body for h in list(vsechna_hodnoceni))
- def get_titul(self):
+ def get_titul(self, celkove_body=None):
"Vrati titul"
- celkove_body = self.vsechny_body()
+ if celkove_body is None:
+ celkove_body = self.vsechny_body()
if celkove_body < 10:
return ''
@@ -898,6 +899,9 @@ class Reseni(SeminarModelBase):
# má OneToOneField s:
# Konfera
+ # má ForeignKey s:
+ # Hodnoceni
+
def __str__(self):
return "{}({}): {}({})".format(self.resitele.first(),len(self.resitele.all()), self.problem.first() ,len(self.problem.all()))
# NOTE: Potenciální DB HOG (bez select_related)
diff --git a/seminar/templates/seminar/archiv/cislo.html b/seminar/templates/seminar/archiv/cislo.html
index 63788e06..d3cc50bb 100644
--- a/seminar/templates/seminar/archiv/cislo.html
+++ b/seminar/templates/seminar/archiv/cislo.html
@@ -1,7 +1,8 @@
{% extends "seminar/archiv/base_cisla.html" %}
-{% block content %}
-
+ {% block content %}
+
+
{% block nadpis1a %}{% block nadpis1b %}
Číslo {{ cislo }}
@@ -45,14 +46,15 @@
Obálkování
- {% endif %}
+ {% endif %}
{% if cislo.verejna_vysledkovka %}
-
Výsledkovka
+
Výsledkovka ({% now "jS F Y H:i" %})
+
{% else %}
{% if user.is_staff %}
-
Výsledkovka (neveřejná)
+
Výsledkovka (neveřejná, {% now "jS F Y H:i:s" %})
{% endif %}
{% endif %}
@@ -61,36 +63,37 @@
#
| Jméno
- {# problémy by měly být veřejné, když je veřejná výsledkovka #}
{% for p in problemy %}
| {{ p.kod_v_rocniku }}
{% endfor %}
| Za číslo
| Za ročník
- {# | Odjakživa#}
+ | Odjakživa
{% for rv in radky_vysledkovky %}
|
{% autoescape off %}{{ rv.poradi }}{% endautoescape %}
|
- {% if rv.resitel.get_titul != "" %}
- {{ rv.resitel.get_titul }}MM
+ {% if rv.titul is not '' %}
+ {{ rv.titul }}MM
{% endif %}
{{ rv.resitel.osoba.plne_jmeno }}
- {% for b in rv.hlavni_problemy_body %}
+ {% for b in rv.body_problemy_sezn %}
| {{ b }}
{% endfor %}
| {{ rv.body_cislo }}
| {{ rv.body_rocnik }}
- {# | {{ rv.body_celkem_odjakziva }}#}
+ | {{ rv.body_celkem_odjakziva }}
|
{% endfor %}
- {% endif %}
+ {% endif %}
{% if not cislo.verejna_vysledkovka and user.is_staff %}
{% endif %}
-
-{% endblock content %}
+ Čas: {% now "jS F Y H:i:s" %}
+
+
+{% endblock content %}
diff --git a/seminar/views/views_all.py b/seminar/views/views_all.py
index 945d283e..39722e46 100644
--- a/seminar/views/views_all.py
+++ b/seminar/views/views_all.py
@@ -476,12 +476,12 @@ def body_resitelu_odjakziva(rocnik, resitele):
# Nasledující řešení je sice správné, ale moc pomalé:
- for res in Reseni.objects.prefetch_related('resitele', 'hodnoceni').all():
+ for res in Reseni.objects.prefetch_related('resitele', 'hodnoceni_set').all():
for r in res.resitele.all():
# daný řešitel nemusí být v naší podmnožině
if r not in resitele: continue
- for hodn in res.hodnoceni.all():
+ for hodn in res.hodnoceni_set.all():
pricti_body(body_odjakziva, r, hodn.body)
return body_odjakziva
@@ -493,10 +493,10 @@ def body_resitelu_za_rocnik(rocnik, aktivni_resitele):
body_za_rocnik[str(ar.id)] = 0
# spočítáme body řešitelům přes všechna řešení s hodnocením v daném ročníku
- reseni = Reseni.objects.prefetch_related('resitele', 'hodnoceni').filter(hodnoceni__cislo_body__rocnik=rocnik)
+ reseni = Reseni.objects.prefetch_related('resitele', 'hodnoceni_set').filter(hodnoceni__cislo_body__rocnik=rocnik)
for res in reseni:
for resitel in res.resitele.all():
- for hodn in res.hodnoceni.all():
+ for hodn in res.hodnoceni_set.all():
pricti_body(body_za_rocnik, resitel, hodn.body)
return body_za_rocnik
@@ -651,6 +651,7 @@ class RadekVysledkovky(object):
self.body_celkem_odjakziva = body_odjakziva
self.poradi = poradi
self.body_problemy_sezn = body_problemy_sezn
+ self.titul = resitel.get_titul(body_odjakziva)
# přiřazuje danému řešiteli body do slovníku
@@ -713,7 +714,7 @@ class CisloView(generic.DetailView):
slovnik[str(ar.id)] = ""
# vezmeme všechna řešení s body do daného čísla
- reseni_do_cisla = Reseni.objects.prefetch_related('problem', 'hodnoceni', 'resitele').filter(hodnoceni__cislo_body=cislo)
+ reseni_do_cisla = Reseni.objects.prefetch_related('problem', 'resitele', 'hodnoceni_set').filter(hodnoceni__cislo_body=cislo)
# projdeme všechna řešení do čísla a přičteme body každému řešiteli do celkových
# bodů i do bodů za problém
@@ -725,7 +726,7 @@ class CisloView(generic.DetailView):
nadproblem_slovnik = hlavni_problemy_slovnik[str(nadproblem.id)]
# a více hodnocení
- for hodn in list(reseni.hodnoceni.all()):
+ for hodn in list(reseni.hodnoceni_set.all()):
body = hodn.body
# a více řešitelů
@@ -780,8 +781,6 @@ class CisloView(generic.DetailView):
context['problemy'] = hlavni_problemy
# context['v_cisle_zadane'] = TODO
# context['resene_problemy'] = resene_problemy
- #XXX nefungují body odjakživa - asi typový problém
- #XXX nefungují tituly - možná korelace s výše uvedeným problémem
print("Předávám kontext.")
return context