Zadání: aktuální výsledkovka
This commit is contained in:
parent
0e6d95615e
commit
0d68c40c73
5 changed files with 112 additions and 70 deletions
|
@ -29,38 +29,8 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if vysledkovka %}
|
{% if vysledkovka %}
|
||||||
<h3>Výsledkovka</h3>
|
<h3>Výsledková listina</h3>
|
||||||
<table class='vysledkovka'>
|
{% include "seminar/vysledkovka_rocnik.html" %}
|
||||||
<tr class='border-b'>
|
|
||||||
<th class='border-r'>#
|
|
||||||
<th class='border-r'>Jméno
|
|
||||||
<th class='border-r'>R.
|
|
||||||
<th class='border-r'>Odjakživa
|
|
||||||
{% for c in rocnik.verejna_cisla %}
|
|
||||||
{% if c.verejna_vysledkovka %}
|
|
||||||
<th class='border-r'><a href="{{ c.verejne_url }}">
|
|
||||||
{{c.rocnik.rocnik}}.{{ c.cislo }}</a>
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
<th class='border-r'>Celkem
|
|
||||||
|
|
||||||
{% for rv in vysledkovka %}
|
|
||||||
<tr>
|
|
||||||
<td class='border-r'>{% autoescape off %}{{ rv.poradi }}{% endautoescape %}
|
|
||||||
<th class='border-r'>
|
|
||||||
{% if rv.titul %}
|
|
||||||
{{ rv.titul }}<sup>MM</sup>
|
|
||||||
{% endif %}
|
|
||||||
{{ rv.resitel.plne_jmeno }}
|
|
||||||
<td class='border-r'>{{ rv.resitel.rocnik }}
|
|
||||||
<td class='border-r'>{{ rv.body_odjakziva }}
|
|
||||||
{% for b in rv.body_cisla %}
|
|
||||||
<td class='border-r'>{{ b }}
|
|
||||||
{% endfor %}
|
|
||||||
<td class='border-r'><b>{{ rv.body_rocnik }}</b>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</table>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
31
seminar/templates/seminar/vysledkovka_rocnik.html
Normal file
31
seminar/templates/seminar/vysledkovka_rocnik.html
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
<table class='vysledkovka'>
|
||||||
|
<tr class='border-b'>
|
||||||
|
<th class='border-r'>#
|
||||||
|
<th class='border-r'>Jméno
|
||||||
|
<th class='border-r'>R.
|
||||||
|
<th class='border-r'>Odjakživa
|
||||||
|
{% for c in rocnik.verejna_cisla %}
|
||||||
|
{% if c.verejna_vysledkovka %}
|
||||||
|
<th class='border-r'><a href="{{ c.verejne_url }}">
|
||||||
|
{{c.rocnik.rocnik}}.{{ c.cislo }}</a>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
<th class='border-r'>Celkem
|
||||||
|
|
||||||
|
{% for rv in vysledkovka %}
|
||||||
|
<tr>
|
||||||
|
<td class='border-r'>{% autoescape off %}{{ rv.poradi }}{% endautoescape %}
|
||||||
|
<th class='border-r'>
|
||||||
|
{% if rv.titul %}
|
||||||
|
{{ rv.titul }}<sup>MM</sup>
|
||||||
|
{% endif %}
|
||||||
|
{{ rv.resitel.plne_jmeno }}
|
||||||
|
<td class='border-r'>{{ rv.resitel.rocnik }}
|
||||||
|
<td class='border-r'>{{ rv.body_odjakziva }}
|
||||||
|
{% for b in rv.body_cisla %}
|
||||||
|
<td class='border-r'>{{ b }}
|
||||||
|
{% endfor %}
|
||||||
|
<td class='border-r'><b>{{ rv.body_rocnik }}</b>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
19
seminar/templates/seminar/zadani/AktualniVysledkovka.html
Normal file
19
seminar/templates/seminar/zadani/AktualniVysledkovka.html
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
{% extends "seminar/zadani/base.html" %}
|
||||||
|
|
||||||
|
{% block submenu %}
|
||||||
|
{% with "vysledkova-listina" as selected %}
|
||||||
|
{% include 'seminar/zadani/submenu.html' %}
|
||||||
|
{% endwith %}
|
||||||
|
{% endblock submenu %}
|
||||||
|
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
{% with nastaveni.aktualni_rocnik as rocnik %}
|
||||||
|
<h2>Výsledky</h2>
|
||||||
|
{% if vysledkovka %}
|
||||||
|
{% include "seminar/vysledkovka_rocnik.html" %}
|
||||||
|
{% else %}
|
||||||
|
V tomto ročníku zatím žádné výsledky nejsou
|
||||||
|
{% endif %}
|
||||||
|
{% endwith %}
|
||||||
|
{% endblock content %}
|
|
@ -19,6 +19,7 @@ urlpatterns = patterns('',
|
||||||
|
|
||||||
url(r'^zadani/aktualni/$', views.AktualniZadaniView, name='seminar_aktualni_zadani'),
|
url(r'^zadani/aktualni/$', views.AktualniZadaniView, name='seminar_aktualni_zadani'),
|
||||||
url(r'^zadani/temata/$', views.ZadaniTemataView, name='seminar_temata'),
|
url(r'^zadani/temata/$', views.ZadaniTemataView, name='seminar_temata'),
|
||||||
|
url(r'^zadani/vysledkova-listina/$', views.ZadaniAktualniVysledkovkaView, name='seminar_vysledky'),
|
||||||
url(r'^$', views.TitulniStranaView.as_view(), name='titulni_strana'),
|
url(r'^$', views.TitulniStranaView.as_view(), name='titulni_strana'),
|
||||||
url(r'^stare-novinky/$', views.StareNovinkyView.as_view(), name='stare_novinky'),
|
url(r'^stare-novinky/$', views.StareNovinkyView.as_view(), name='stare_novinky'),
|
||||||
|
|
||||||
|
|
|
@ -37,6 +37,17 @@ def ZadaniTemataView(request):
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def ZadaniAktualniVysledkovkaView(request):
|
||||||
|
nastaveni = get_object_or_404(Nastaveni)
|
||||||
|
vysledkovka = vysledkovka_rocniku(nastaveni.aktualni_rocnik)
|
||||||
|
return render(request, 'seminar/zadani/AktualniVysledkovka.html',
|
||||||
|
{
|
||||||
|
'nastaveni': nastaveni,
|
||||||
|
'vysledkovka': vysledkovka,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
### Titulni strana
|
### Titulni strana
|
||||||
|
|
||||||
class TitulniStranaView(generic.ListView):
|
class TitulniStranaView(generic.ListView):
|
||||||
|
@ -110,6 +121,53 @@ def sloupec_s_poradim(vysledky):
|
||||||
return poradi_l
|
return poradi_l
|
||||||
|
|
||||||
|
|
||||||
|
def vysledkovka_rocniku(rocnik):
|
||||||
|
"""Přebírá ročník (např. context["rocnik"]) a vrací výsledkovou listinu ve
|
||||||
|
formě vhodné pro šablonu "seminar/vysledkovka_rocniku.html"
|
||||||
|
"""
|
||||||
|
|
||||||
|
#vyberu vsechny verejne vysledky z rocniku
|
||||||
|
cisla_v_rocniku = VysledkyKCisluZaRocnik.objects.filter(cislo__verejna_vysledkovka=True, cislo__rocnik=rocnik).order_by('cislo')
|
||||||
|
|
||||||
|
#pokud žádné nejsou, výsledkovka se nezobrazí
|
||||||
|
if not cisla_v_rocniku:
|
||||||
|
return None
|
||||||
|
|
||||||
|
#vybere vsechny vysledky z posledniho verejneho cisla a setridi sestupne dle bodu
|
||||||
|
vysledky = list(cisla_v_rocniku.filter(cislo = cisla_v_rocniku[0].cislo).order_by('-body', 'resitel__prijmeni', 'resitel__jmeno').select_related('resitel'))
|
||||||
|
|
||||||
|
vysledkovka = []
|
||||||
|
|
||||||
|
# doplníme některé údaje do řádků výsledkovky pro řešitele ve skupině
|
||||||
|
for poradi, v in zip(sloupec_s_poradim(vysledky), vysledky):
|
||||||
|
v.poradi = poradi
|
||||||
|
v.resitel.rocnik = v.resitel.rocnik(rocnik)
|
||||||
|
|
||||||
|
verejne_vysl_odjakziva = VysledkyKCisluOdjakziva.objects.filter(cislo__verejna_vysledkovka=True, cislo__rocnik=rocnik, cislo=cisla_v_rocniku[0].cislo)
|
||||||
|
|
||||||
|
v.body_odjakziva = verejne_vysl_odjakziva.filter(resitel = v.resitel)[0].body
|
||||||
|
v.titul = v.resitel.get_titul(v.body_odjakziva)
|
||||||
|
v.body_rocnik = v.body
|
||||||
|
v.body_cisla = []
|
||||||
|
|
||||||
|
#pokud pro dany rok a cislo nema resitel vysledky, ma defaultne 0
|
||||||
|
for cis in rocnik.verejna_cisla():
|
||||||
|
if cis.verejna_vysledkovka:
|
||||||
|
#seznam vysledku se spravnym rocnikem a cislem pro resitele
|
||||||
|
#zobrazim jen je-li vysledkovka verejna
|
||||||
|
body_za_cislo = VysledkyZaCislo.objects.filter(cislo__rocnik=rocnik).filter(cislo = cis).filter(resitel = v.resitel)
|
||||||
|
if body_za_cislo:
|
||||||
|
#neprazdne vysledky by mely obsahovat prave jeden vysledek
|
||||||
|
v.body_cisla.append(body_za_cislo[0].body)
|
||||||
|
else:
|
||||||
|
#resitel nema za cislo body
|
||||||
|
v.body_cisla.append(0)
|
||||||
|
|
||||||
|
vysledkovka.append(v)
|
||||||
|
|
||||||
|
return vysledkovka
|
||||||
|
|
||||||
|
|
||||||
class RocnikView(generic.DetailView):
|
class RocnikView(generic.DetailView):
|
||||||
model = Rocnik
|
model = Rocnik
|
||||||
template_name = 'seminar/archiv/rocnik.html'
|
template_name = 'seminar/archiv/rocnik.html'
|
||||||
|
@ -131,44 +189,7 @@ class RocnikView(generic.DetailView):
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
context = super(RocnikView, self).get_context_data(**kwargs)
|
context = super(RocnikView, self).get_context_data(**kwargs)
|
||||||
|
|
||||||
cisla_v_rocniku = VysledkyKCisluZaRocnik.objects.filter(cislo__verejna_vysledkovka = True).filter(cislo__rocnik = context['rocnik']).order_by('cislo')
|
context['vysledkovka'] = vysledkovka_rocniku(context["rocnik"])
|
||||||
#vyberu vsechny verejne vysledky z rocniku
|
|
||||||
#pokud žádné nejsou, výsledkovka se nezobrazí
|
|
||||||
if cisla_v_rocniku:
|
|
||||||
vysledky = list(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
|
|
||||||
vysledkovka = []
|
|
||||||
|
|
||||||
# doplníme některé údaje do řádků výsledkovky pro řešitele ve skupině
|
|
||||||
for poradi, v in zip(sloupec_s_poradim(vysledky), vysledky):
|
|
||||||
v.poradi = poradi
|
|
||||||
v.resitel.rocnik = v.resitel.rocnik(context['rocnik'])
|
|
||||||
|
|
||||||
verejne_vysl_odjakziva = VysledkyKCisluOdjakziva.objects.filter(cislo__verejna_vysledkovka = True).filter(cislo__rocnik = context['rocnik']).filter(cislo = cisla_v_rocniku[0].cislo)
|
|
||||||
|
|
||||||
v.body_odjakziva = verejne_vysl_odjakziva.filter(resitel = v.resitel)[0].body
|
|
||||||
v.titul = v.resitel.get_titul(v.body_odjakziva)
|
|
||||||
v.body_rocnik = v.body
|
|
||||||
v.body_cisla = []
|
|
||||||
|
|
||||||
#pokud pro dany rok a cislo nema resitel vysledky, ma defaultne 0
|
|
||||||
for cis in context['rocnik'].verejna_cisla():
|
|
||||||
if cis.verejna_vysledkovka:
|
|
||||||
body_za_cislo = VysledkyZaCislo.objects.filter(cislo__rocnik = context['rocnik']).filter(cislo = cis).filter(resitel = v.resitel)
|
|
||||||
#seznam vysledku se spravnym rocnikem a cislem pro resitele
|
|
||||||
#zobrazim jen je-li vysledkovka verejna
|
|
||||||
if body_za_cislo:
|
|
||||||
v.body_cisla.append(body_za_cislo[0].body)
|
|
||||||
#neprazdne vysledky by mely obsahovat prave jeden vysledek
|
|
||||||
else:
|
|
||||||
v.body_cisla.append(0)
|
|
||||||
#resitel nema za cislo body
|
|
||||||
|
|
||||||
vysledkovka.append(v)
|
|
||||||
|
|
||||||
|
|
||||||
context['vysledkovka'] = vysledkovka
|
|
||||||
|
|
||||||
temata_v_rocniku = Problem.objects.filter(typ=Problem.TYP_TEMA, cislo_zadani__rocnik=context['rocnik']).order_by('kod')
|
temata_v_rocniku = Problem.objects.filter(typ=Problem.TYP_TEMA, cislo_zadani__rocnik=context['rocnik']).order_by('kod')
|
||||||
context['temata_v_rocniku'] = temata_v_rocniku
|
context['temata_v_rocniku'] = temata_v_rocniku
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue