Move vysledkovek do aplikace vysledkovky
This commit is contained in:
parent
ef68d3fb75
commit
61b6f4bfd9
15 changed files with 159 additions and 153 deletions
|
@ -7,7 +7,7 @@ from django.utils.encoding import force_text
|
|||
|
||||
from .utils import default_ovvpfile
|
||||
from seminar.models import Rocnik, Soustredeni
|
||||
from seminar.views import vysledkovka
|
||||
from vysledkovky import utils
|
||||
from seminar.utils import aktivniResitele
|
||||
|
||||
class ExportIndexView(generic.View):
|
||||
|
@ -66,8 +66,8 @@ class ExportRocnikView(generic.View):
|
|||
rocnik = get_object_or_404(Rocnik, prvni_rok=pr, exportovat=True)
|
||||
cislo = rocnik.posledni_zverejnena_vysledkovka_cislo()
|
||||
resitele = aktivniResitele(cislo, True)
|
||||
slovnik_body = vysledkovka.secti_body_za_rocnik(cislo, resitele, False)
|
||||
setrizeni_resitele, body = vysledkovka.setrid_resitele_a_body(slovnik_body)
|
||||
slovnik_body = utils.secti_body_za_rocnik(cislo, resitele, False)
|
||||
setrizeni_resitele, body = utils.setrid_resitele_a_body(slovnik_body)
|
||||
|
||||
of = default_ovvpfile('MaM.rocnik', rocnik)
|
||||
of.headers['comment'] = u'MaM-Web export aktivnich resitelu rocniku {rocnik} do cisla {cislo}'.format(rocnik=rocnik, cislo=cislo)
|
||||
|
|
|
@ -139,6 +139,8 @@ INSTALLED_APPS = (
|
|||
'api',
|
||||
'aesop',
|
||||
'odevzdavatko',
|
||||
'vysledkovky',
|
||||
|
||||
# Admin upravy:
|
||||
|
||||
# 'material',
|
||||
|
|
|
@ -58,34 +58,7 @@
|
|||
{% endif %}
|
||||
|
||||
{% if cislo.verejna_vysledkovka or user.is_staff %}
|
||||
<table class='vysledkovka'>
|
||||
<tr class='border-b'>
|
||||
<th class='border-r'>#
|
||||
<th class='border-r'>Jméno #}
|
||||
{# problémy by měly být veřejné, když je veřejná výsledkovka #}
|
||||
{# {% for p in problemy %}
|
||||
<th class='border-r'><a href="{{ p.verejne_url }}">{{ p.kod_v_rocniku }}</a>
|
||||
{% endfor %}
|
||||
<th class='border-r'>Za číslo</sup>
|
||||
<th class='border-r'>Za ročník
|
||||
<th class='border-r'>Odjakživa
|
||||
{% for rv in radky_vysledkovky %}
|
||||
<tr>
|
||||
<td class='border-r'>{% autoescape off %}{{ rv.poradi }}{% endautoescape %}
|
||||
<th class='border-r'>
|
||||
{% if rv.resitel.titul != "" %}
|
||||
{{ rv.resitel.titul }}<sup>MM</sup>
|
||||
{% endif %}
|
||||
{{ rv.resitel.osoba.plne_jmeno }}
|
||||
{% for b in rv.hlavni_problemy_body %}
|
||||
<td class='border-r'>{{ b }}
|
||||
{% endfor %}
|
||||
<td class='border-r'>{{ rv.body_cislo }}
|
||||
<td class='border-r'><b>{{ rv.body_rocnik }}</b>
|
||||
<td class='border-r'>{{ rv.body_celkem_odjakziva }}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% include "vysledkovky/vysledkovka_cisla.html" %}
|
||||
{% endif %}
|
||||
|
||||
{% if not cislo.verejna_vysledkovka and user.is_staff %}
|
||||
|
|
|
@ -79,73 +79,7 @@
|
|||
{% endif %}
|
||||
|
||||
{% if cislo.verejna_vysledkovka or user.je_org %}
|
||||
<table class='vysledkovka'>
|
||||
<tr class='border-b'>
|
||||
<th class='border-r'>#
|
||||
<th class='border-r'>Jméno
|
||||
{% for p in problemy %}
|
||||
<th class='border-r' id="problem{{ forloop.counter }}">{# <a href="{{ p.verejne_url }}"> #}{{ p.kod_v_rocniku }}{# </a> #}
|
||||
|
||||
{# TODELETE #}
|
||||
{% for podproblemy in podproblemy_iter.next %}
|
||||
<th class='border-r podproblem{{ forloop.parentloop.counter }} podproblem'>{# <a href="{{ podproblemy.verejne_url }}"> #}{{ podproblemy.kod_v_rocniku }}{# </a> #}
|
||||
{% endfor %}
|
||||
{# TODELETE #}
|
||||
|
||||
{% endfor %}
|
||||
{% if ostatni %}<th class='border-r'>Ostatní {% endif %}
|
||||
|
||||
{# TODELETE #}
|
||||
{% for podproblemy in podproblemy_iter.next %}
|
||||
<th class='border-r podproblem{{ problemy.len }} podproblem'>{# <a href="{{ podproblemy.verejne_url }}"> #}{{ podproblemy.kod_v_rocniku }}{# </a> #}
|
||||
{% endfor %}
|
||||
{# TODELETE #}
|
||||
|
||||
|
||||
<th class='border-r'>Za číslo
|
||||
<th class='border-r'>Za ročník
|
||||
<th class='border-r'>Odjakživa
|
||||
{% for rv in radky_vysledkovky %}
|
||||
<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.osoba.plne_jmeno }}
|
||||
{% for b in rv.body_problemy_sezn %}
|
||||
<td class='border-r'>{{ b }}
|
||||
|
||||
{# TODELETE #}
|
||||
{% for body_podproblemu in rv.body_podproblemy_iter.next %}
|
||||
<td class='border-r podproblem{{ forloop.parentloop.counter }} podproblem'>{{ body_podproblemu }}
|
||||
{% endfor %}
|
||||
{# TODELETE #}
|
||||
|
||||
{% endfor %}
|
||||
<td class='border-r'>{{ rv.body_cislo }}
|
||||
<td class='border-r'><b>{{ rv.body_rocnik }}</b>
|
||||
<td class='border-r'>{{ rv.body_celkem_odjakziva }}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
||||
{# TODELETE #}
|
||||
<script>
|
||||
{% for p in problemy %}
|
||||
$(".podproblem{{ forloop.counter }}").css("display", "none")
|
||||
$("#problem{{ forloop.counter }}")[0].addEventListener('mouseover', podproblem{{ forloop.counter }})
|
||||
$("#problem{{ forloop.counter }}")[0].addEventListener('mouseout', podproblem{{ forloop.counter }}end)
|
||||
function podproblem{{ forloop.counter }}(event) {
|
||||
$(".podproblem{{ forloop.counter }}").css("display", "")
|
||||
}
|
||||
function podproblem{{ forloop.counter }}end(event) {
|
||||
$(".podproblem{{ forloop.counter }}").css("display", "none")
|
||||
}
|
||||
{% endfor %}
|
||||
</script>
|
||||
{# TODELETE #}
|
||||
|
||||
{% include "vysledkovky/vysledkovka_cisla.html" %}
|
||||
{% endif %}
|
||||
|
||||
{% if not cislo.verejna_vysledkovka and user.je_org %}
|
||||
|
|
|
@ -72,17 +72,13 @@
|
|||
{% endif %}
|
||||
|
||||
<h2>Výsledková listina</h2>
|
||||
{% include "seminar/vysledkovka_rocnik.html" %}
|
||||
{% include "vysledkovky/vysledkovka_rocnik.html" %}
|
||||
{% endif %}
|
||||
|
||||
{% if user.je_org %}
|
||||
<div class='mam-org-only'>
|
||||
<h2>Výsledková listina včetně neveřejných bodů</h2>
|
||||
{% with radky_vysledkovky_s_neverejnymi as radky_vysledkovky %}
|
||||
{% with cisla_s_neverejnymi as cisla %}
|
||||
{% include "seminar/vysledkovka_rocnik.html" %}
|
||||
{% endwith %}
|
||||
{% endwith %}
|
||||
{% include "vysledkovky/vysledkovka_rocnik_neverejna.html" %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
</h1>
|
||||
|
||||
{% if radky_vysledkovky %}
|
||||
{% include "seminar/vysledkovka_rocnik.html" %}
|
||||
{% include "vysledkovky/vysledkovka_rocnik.html" %}
|
||||
{% else %}
|
||||
<p>V tomto ročníku zatím žádné výsledky nejsou.</p>
|
||||
{% endif %}
|
||||
|
@ -22,11 +22,7 @@
|
|||
{% if user.je_org and vysledkovka_s_neverejnymi %}
|
||||
<div class='mam-org-only'>
|
||||
<h1>Výsledky včetně neveřejných</h1>
|
||||
{% with vysledkovka_s_neverejnymi as radky_vysledkovky %}
|
||||
{% with cisla_s_neverejnymi as cisla %}
|
||||
{% include "seminar/vysledkovka_rocnik.html" %}
|
||||
{% endwith %}
|
||||
{% endwith %}
|
||||
{% include "vysledkovky/vysledkovka_rocnik_neverejna.html" %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
|
|
|
@ -23,7 +23,8 @@ from seminar.forms import PrihlaskaForm, ProfileEditForm, PoMaturiteProfileEditF
|
|||
import seminar.forms as f
|
||||
import seminar.templatetags.treenodes as tnltt
|
||||
import seminar.views.views_rest as vr
|
||||
from seminar.views.vysledkovka import vysledkovka_rocniku, vysledkovka_cisla, body_resitelu
|
||||
from vysledkovky.utils import body_resitelu
|
||||
from vysledkovky.views import vysledkovka_rocniku, vysledkovka_cisla
|
||||
|
||||
from datetime import date, datetime
|
||||
from django.utils import timezone
|
||||
|
@ -487,31 +488,34 @@ def ZadaniAktualniVysledkovkaView(request):
|
|||
nastaveni = get_object_or_404(Nastaveni)
|
||||
# Aktualni verejna vysledkovka
|
||||
rocnik = nastaveni.aktualni_rocnik
|
||||
vysledkovka = vysledkovka_rocniku(rocnik)
|
||||
cisla = cisla_rocniku(rocnik)
|
||||
context = vysledkovka_rocniku(
|
||||
rocnik=rocnik,
|
||||
request=request,
|
||||
sneverejnou=True
|
||||
)
|
||||
|
||||
# kdyz neni verejna vysledkovka, tak zobraz starou
|
||||
if not vysledkovka or not any(map(lambda it: it.verejna_vysledkovka, cisla)):
|
||||
if len(context['cisla']) == 0:
|
||||
try:
|
||||
minuly_rocnik = Rocnik.objects.get(
|
||||
prvni_rok=(rocnik.prvni_rok-1))
|
||||
rocnik = minuly_rocnik
|
||||
vysledkovka = vysledkovka_rocniku(minuly_rocnik)
|
||||
cisla = cisla_rocniku(minuly_rocnik)
|
||||
|
||||
# Přepíšeme prázdnou výsledkovku výsledkovkou z minulého ročníku
|
||||
context = vysledkovka_rocniku(
|
||||
rocnik=rocnik,
|
||||
context=context,
|
||||
request=request,
|
||||
sneverejnou=True
|
||||
)
|
||||
except ObjectDoesNotExist:
|
||||
pass
|
||||
# vysledkovka s neverejnyma vysledkama
|
||||
vysledkovka_s_neverejnymi = vysledkovka_rocniku(nastaveni.aktualni_rocnik, jen_verejne=False)
|
||||
cisla_s_neverejnymi = cisla_rocniku(nastaveni.aktualni_rocnik, jen_verejne=False)
|
||||
|
||||
context['rocnik'] = rocnik
|
||||
return render(
|
||||
request,
|
||||
'seminar/zadani/AktualniVysledkovka.html',
|
||||
{
|
||||
'rocnik': rocnik,
|
||||
'radky_vysledkovky': vysledkovka,
|
||||
'cisla': cisla,
|
||||
'vysledkovka_s_neverejnymi': vysledkovka_s_neverejnymi,
|
||||
'cisla_s_neverejnymi': cisla_s_neverejnymi,
|
||||
}
|
||||
context
|
||||
)
|
||||
|
||||
|
||||
|
@ -655,18 +659,12 @@ class RocnikView(generic.DetailView):
|
|||
def get_context_data(self, **kwargs):
|
||||
start = time.time()
|
||||
context = super(RocnikView, self).get_context_data(**kwargs)
|
||||
|
||||
# vysledkovka = True zajistí vykreslení,
|
||||
# zkontrolovat, kdy se má a nemá vykreslovat
|
||||
cisla = cisla_rocniku(context["rocnik"])
|
||||
context['vysledkovka'] = any(map(lambda it: it.verejna_vysledkovka, cisla))
|
||||
if self.request.user.je_org:
|
||||
context['cisla_s_neverejnymi'] = cisla_rocniku(context["rocnik"], jen_verejne=False)
|
||||
context['radky_vysledkovky_s_neverejnymi'] = vysledkovka_rocniku(context["rocnik"], jen_verejne=False)
|
||||
context['hlavni_problemy_v_rocniku_s_neverejnymi'] = hlavni_problemy_f(problemy_rocniku(context["rocnik"], jen_verejne=False))
|
||||
context['cisla'] = cisla
|
||||
context['radky_vysledkovky'] = vysledkovka_rocniku(context["rocnik"])
|
||||
context['hlavni_problemy_v_rocniku'] = hlavni_problemy_f(problemy_rocniku(context["rocnik"]))
|
||||
context = vysledkovka_rocniku(
|
||||
rocnik=context["rocnik"],
|
||||
context=context,
|
||||
request=self.request,
|
||||
sneverejnou=True
|
||||
)
|
||||
end = time.time()
|
||||
print("Kontext:", end-start)
|
||||
|
||||
|
|
3
vysledkovky/__init__.py
Normal file
3
vysledkovky/__init__.py
Normal file
|
@ -0,0 +1,3 @@
|
|||
"""
|
||||
Obsahuje výsledkovky a vše, co se týká sčítání bodů.
|
||||
"""
|
5
vysledkovky/apps.py
Normal file
5
vysledkovky/apps.py
Normal file
|
@ -0,0 +1,5 @@
|
|||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class VysledkovkyConfig(AppConfig):
|
||||
name = 'vysledkovky'
|
0
vysledkovky/migrations/__init__.py
Normal file
0
vysledkovky/migrations/__init__.py
Normal file
66
vysledkovky/templates/vysledkovky/vysledkovka_cisla.html
Normal file
66
vysledkovky/templates/vysledkovky/vysledkovka_cisla.html
Normal file
|
@ -0,0 +1,66 @@
|
|||
<table class='vysledkovka'>
|
||||
<tr class='border-b'>
|
||||
<th class='border-r'>#
|
||||
<th class='border-r'>Jméno
|
||||
{% for p in problemy %}
|
||||
<th class='border-r' id="problem{{ forloop.counter }}">{# <a href="{{ p.verejne_url }}"> #}{{ p.kod_v_rocniku }}{# </a> #}
|
||||
|
||||
{# TODELETE #}
|
||||
{% for podproblemy in podproblemy_iter.next %}
|
||||
<th class='border-r podproblem{{ forloop.parentloop.counter }} podproblem'>{# <a href="{{ podproblemy.verejne_url }}"> #}{{ podproblemy.kod_v_rocniku }}{# </a> #}
|
||||
{% endfor %}
|
||||
{# TODELETE #}
|
||||
|
||||
{% endfor %}
|
||||
{% if ostatni %}<th class='border-r'>Ostatní {% endif %}
|
||||
|
||||
{# TODELETE #}
|
||||
{% for podproblemy in podproblemy_iter.next %}
|
||||
<th class='border-r podproblem{{ problemy.len }} podproblem'>{# <a href="{{ podproblemy.verejne_url }}"> #}{{ podproblemy.kod_v_rocniku }}{# </a> #}
|
||||
{% endfor %}
|
||||
{# TODELETE #}
|
||||
|
||||
|
||||
<th class='border-r'>Za číslo
|
||||
<th class='border-r'>Za ročník
|
||||
<th class='border-r'>Odjakživa
|
||||
{% for rv in radky_vysledkovky %}
|
||||
<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.osoba.plne_jmeno }}
|
||||
{% for b in rv.body_problemy_sezn %}
|
||||
<td class='border-r'>{{ b }}
|
||||
|
||||
{# TODELETE #}
|
||||
{% for body_podproblemu in rv.body_podproblemy_iter.next %}
|
||||
<td class='border-r podproblem{{ forloop.parentloop.counter }} podproblem'>{{ body_podproblemu }}
|
||||
{% endfor %}
|
||||
{# TODELETE #}
|
||||
|
||||
{% endfor %}
|
||||
<td class='border-r'>{{ rv.body_cislo }}
|
||||
<td class='border-r'><b>{{ rv.body_rocnik }}</b>
|
||||
<td class='border-r'>{{ rv.body_celkem_odjakziva }}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
||||
{# TODELETE #}
|
||||
<script>
|
||||
{% for p in problemy %}
|
||||
$(".podproblem{{ forloop.counter }}").css("display", "none")
|
||||
$("#problem{{ forloop.counter }}")[0].addEventListener('mouseover', podproblem{{ forloop.counter }})
|
||||
$("#problem{{ forloop.counter }}")[0].addEventListener('mouseout', podproblem{{ forloop.counter }}end)
|
||||
function podproblem{{ forloop.counter }}(event) {
|
||||
$(".podproblem{{ forloop.counter }}").css("display", "")
|
||||
}
|
||||
function podproblem{{ forloop.counter }}end(event) {
|
||||
$(".podproblem{{ forloop.counter }}").css("display", "none")
|
||||
}
|
||||
{% endfor %}
|
||||
</script>
|
||||
{# TODELETE #}
|
|
@ -0,0 +1 @@
|
|||
{% include "vysledkovky/vysledkovka_rocnik.html" with radky_vysledkovky=radky_vysledkovky_s_neverejnymi cisla=cisla_s_neverejnymi %}
|
|
@ -2,7 +2,6 @@ import seminar.models as m
|
|||
from django.db.models import Q, Sum, Count
|
||||
from seminar.utils import aktivniResitele, resi_v_rocniku, cisla_rocniku, hlavni_problem, hlavni_problemy_f, problemy_cisla, podproblemy_v_cislu
|
||||
import time
|
||||
### Výsledky
|
||||
|
||||
ROCNIK_ZRUSENI_TEMAT = 25
|
||||
|
||||
|
@ -142,7 +141,7 @@ def setrid_resitele_a_body(slov_resitel_body):
|
|||
setrizene_body = [dvojice[1] for dvojice in slov_resitel_body]
|
||||
return setrizeni_resitele_id, setrizene_body
|
||||
|
||||
def vysledkovka_rocniku(rocnik, jen_verejne=True):
|
||||
def data_vysledkovky_rocniku(rocnik, jen_verejne=True):
|
||||
""" Přebírá ročník (např. context["rocnik"]) a vrací výsledkovou listinu ve
|
||||
formě vhodné pro šablonu "seminar/vysledkovka_rocniku.html"
|
||||
"""
|
||||
|
@ -197,7 +196,7 @@ def vysledkovka_rocniku(rocnik, jen_verejne=True):
|
|||
end = time.time()
|
||||
print("Vysledkovka rocniku",end-start)
|
||||
|
||||
return radky_vysledkovky
|
||||
return radky_vysledkovky, cisla
|
||||
|
||||
class RadekVysledkovkyCisla(object):
|
||||
"""Obsahuje věci, které se hodí vědět při konstruování výsledkovky.
|
||||
|
@ -372,9 +371,7 @@ class FixedIterator:
|
|||
# TODELETE
|
||||
|
||||
|
||||
def vysledkovka_cisla(cislo, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
def data_vysledkovky_cisla(cislo):
|
||||
problemy = problemy_cisla(cislo)
|
||||
hlavni_problemy = hlavni_problemy_f(problemy)
|
||||
## TODO možná chytřeji vybírat aktivní řešitele
|
||||
|
@ -453,13 +450,11 @@ def vysledkovka_cisla(cislo, context=None):
|
|||
i += 1
|
||||
|
||||
# vytahané informace předáváme do kontextu
|
||||
context['cislo'] = cislo
|
||||
context['radky_vysledkovky'] = radky_vysledkovky
|
||||
context['problemy'] = temata_a_spol
|
||||
context['ostatni'] = je_nejake_ostatni
|
||||
pt = [podproblemy[it.id] for it in temata_a_spol]+[podproblemy[-1]]
|
||||
context['podproblemy'] = pt
|
||||
context['podproblemy_iter'] = FixedIterator(pt.__iter__()) # TODELETE
|
||||
#context['v_cisle_zadane'] = TODO
|
||||
#context['resene_problemy'] = resene_problemy
|
||||
return context
|
||||
return (
|
||||
radky_vysledkovky,
|
||||
temata_a_spol,
|
||||
je_nejake_ostatni,
|
||||
pt,
|
||||
FixedIterator(pt.__iter__())
|
||||
)
|
37
vysledkovky/views.py
Normal file
37
vysledkovky/views.py
Normal file
|
@ -0,0 +1,37 @@
|
|||
from .utils import data_vysledkovky_cisla, \
|
||||
data_vysledkovky_rocniku
|
||||
|
||||
|
||||
def vysledkovka_cisla(cislo, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
context['cislo'] = cislo
|
||||
|
||||
(
|
||||
context['radky_vysledkovky'],
|
||||
context['problemy'],
|
||||
context['ostatni'],
|
||||
context['podproblemy'],
|
||||
context['podproblemy_iter']
|
||||
) = data_vysledkovky_cisla(cislo)
|
||||
return context
|
||||
|
||||
|
||||
def vysledkovka_rocniku(rocnik, context=None, request=None, sneverejnou=False):
|
||||
if context is None:
|
||||
context = {}
|
||||
|
||||
(
|
||||
context['radky_vysledkovky'],
|
||||
context['cisla']
|
||||
) = data_vysledkovky_rocniku(rocnik)
|
||||
|
||||
context['vysledkovka'] = len(context['cisla']) != 0
|
||||
|
||||
if sneverejnou and request and request.user.je_org:
|
||||
(
|
||||
context['radky_vysledkovky_s_neverejnymi'],
|
||||
context['cisla_s_neverejnymi']
|
||||
) = data_vysledkovky_rocniku(rocnik, jen_verejne=False)
|
||||
|
||||
return context
|
Loading…
Reference in a new issue