diff --git a/aesop/views.py b/aesop/views.py
index c46ab605..d815b5d5 100644
--- a/aesop/views.py
+++ b/aesop/views.py
@@ -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)
diff --git a/mamweb/settings_common.py b/mamweb/settings_common.py
index 08997bb4..19f80548 100644
--- a/mamweb/settings_common.py
+++ b/mamweb/settings_common.py
@@ -139,6 +139,8 @@ INSTALLED_APPS = (
'api',
'aesop',
'odevzdavatko',
+ 'vysledkovky',
+
# Admin upravy:
# 'material',
diff --git a/seminar/templates/seminar/archiv/cislo-normal.html b/seminar/templates/seminar/archiv/cislo-normal.html
index e23da09c..4d4a9da0 100644
--- a/seminar/templates/seminar/archiv/cislo-normal.html
+++ b/seminar/templates/seminar/archiv/cislo-normal.html
@@ -58,34 +58,7 @@
{% endif %}
{% if cislo.verejna_vysledkovka or user.is_staff %}
-
-
- #
- | 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
- {% for rv in radky_vysledkovky %}
- |
- {% autoescape off %}{{ rv.poradi }}{% endautoescape %}
- |
- {% if rv.resitel.titul != "" %}
- {{ rv.resitel.titul }}MM
- {% endif %}
- {{ rv.resitel.osoba.plne_jmeno }}
- {% for b in rv.hlavni_problemy_body %}
- | {{ b }}
- {% endfor %}
- | {{ rv.body_cislo }}
- | {{ rv.body_rocnik }}
- | {{ rv.body_celkem_odjakziva }}
- |
- {% endfor %}
-
+ {% include "vysledkovky/vysledkovka_cisla.html" %}
{% endif %}
{% if not cislo.verejna_vysledkovka and user.is_staff %}
diff --git a/seminar/templates/seminar/archiv/cislo.html b/seminar/templates/seminar/archiv/cislo.html
index 1f18d4b5..13a505ac 100644
--- a/seminar/templates/seminar/archiv/cislo.html
+++ b/seminar/templates/seminar/archiv/cislo.html
@@ -79,73 +79,7 @@
{% endif %}
{% if cislo.verejna_vysledkovka or user.je_org %}
-
-
- #
- | Jméno
- {% for p in problemy %}
- | {# #}{{ p.kod_v_rocniku }}{# #}
-
- {# TODELETE #}
- {% for podproblemy in podproblemy_iter.next %}
- | {# #}{{ podproblemy.kod_v_rocniku }}{# #}
- {% endfor %}
- {# TODELETE #}
-
- {% endfor %}
- {% if ostatni %} | Ostatní {% endif %}
-
- {# TODELETE #}
- {% for podproblemy in podproblemy_iter.next %}
- | {# #}{{ podproblemy.kod_v_rocniku }}{# #}
- {% endfor %}
- {# TODELETE #}
-
-
- | Za číslo
- | Za ročník
- | Odjakživa
- {% for rv in radky_vysledkovky %}
- |
- {% autoescape off %}{{ rv.poradi }}{% endautoescape %}
- |
- {% if rv.titul %}
- {{ rv.titul }}MM
- {% endif %}
- {{ rv.resitel.osoba.plne_jmeno }}
- {% for b in rv.body_problemy_sezn %}
- | {{ b }}
-
- {# TODELETE #}
- {% for body_podproblemu in rv.body_podproblemy_iter.next %}
- | {{ body_podproblemu }}
- {% endfor %}
- {# TODELETE #}
-
- {% endfor %}
- | {{ rv.body_cislo }}
- | {{ rv.body_rocnik }}
- | {{ rv.body_celkem_odjakziva }}
- |
- {% endfor %}
-
-
- {# TODELETE #}
-
- {# TODELETE #}
-
+ {% include "vysledkovky/vysledkovka_cisla.html" %}
{% endif %}
{% if not cislo.verejna_vysledkovka and user.je_org %}
diff --git a/seminar/templates/seminar/archiv/rocnik.html b/seminar/templates/seminar/archiv/rocnik.html
index aa2f1dbc..7f71037f 100644
--- a/seminar/templates/seminar/archiv/rocnik.html
+++ b/seminar/templates/seminar/archiv/rocnik.html
@@ -72,17 +72,13 @@
{% endif %}
Výsledková listina
- {% include "seminar/vysledkovka_rocnik.html" %}
+ {% include "vysledkovky/vysledkovka_rocnik.html" %}
{% endif %}
{% if user.je_org %}
Výsledková listina včetně neveřejných bodů
- {% 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" %}
{% endif %}
diff --git a/seminar/templates/seminar/zadani/AktualniVysledkovka.html b/seminar/templates/seminar/zadani/AktualniVysledkovka.html
index 15c856d9..4ea2bffe 100644
--- a/seminar/templates/seminar/zadani/AktualniVysledkovka.html
+++ b/seminar/templates/seminar/zadani/AktualniVysledkovka.html
@@ -9,7 +9,7 @@
{% if radky_vysledkovky %}
- {% include "seminar/vysledkovka_rocnik.html" %}
+ {% include "vysledkovky/vysledkovka_rocnik.html" %}
{% else %}
V tomto ročníku zatím žádné výsledky nejsou.
{% endif %}
@@ -22,11 +22,7 @@
{% if user.je_org and vysledkovka_s_neverejnymi %}
Výsledky včetně neveřejných
- {% 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" %}
{% endif %}
diff --git a/seminar/views/views_all.py b/seminar/views/views_all.py
index d5e3e54c..a646d98f 100644
--- a/seminar/views/views_all.py
+++ b/seminar/views/views_all.py
@@ -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)
diff --git a/vysledkovky/__init__.py b/vysledkovky/__init__.py
new file mode 100644
index 00000000..a420da01
--- /dev/null
+++ b/vysledkovky/__init__.py
@@ -0,0 +1,3 @@
+"""
+Obsahuje výsledkovky a vše, co se týká sčítání bodů.
+"""
\ No newline at end of file
diff --git a/vysledkovky/apps.py b/vysledkovky/apps.py
new file mode 100644
index 00000000..7221864c
--- /dev/null
+++ b/vysledkovky/apps.py
@@ -0,0 +1,5 @@
+from django.apps import AppConfig
+
+
+class VysledkovkyConfig(AppConfig):
+ name = 'vysledkovky'
diff --git a/vysledkovky/migrations/__init__.py b/vysledkovky/migrations/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/vysledkovky/templates/vysledkovky/vysledkovka_cisla.html b/vysledkovky/templates/vysledkovky/vysledkovka_cisla.html
new file mode 100644
index 00000000..adeb9067
--- /dev/null
+++ b/vysledkovky/templates/vysledkovky/vysledkovka_cisla.html
@@ -0,0 +1,66 @@
+
+
+ #
+ | Jméno
+ {% for p in problemy %}
+ | {# #}{{ p.kod_v_rocniku }}{# #}
+
+ {# TODELETE #}
+ {% for podproblemy in podproblemy_iter.next %}
+ | {# #}{{ podproblemy.kod_v_rocniku }}{# #}
+ {% endfor %}
+ {# TODELETE #}
+
+ {% endfor %}
+ {% if ostatni %} | Ostatní {% endif %}
+
+ {# TODELETE #}
+ {% for podproblemy in podproblemy_iter.next %}
+ | {# #}{{ podproblemy.kod_v_rocniku }}{# #}
+ {% endfor %}
+ {# TODELETE #}
+
+
+ | Za číslo
+ | Za ročník
+ | Odjakživa
+ {% for rv in radky_vysledkovky %}
+ |
+ {% autoescape off %}{{ rv.poradi }}{% endautoescape %}
+ |
+ {% if rv.titul %}
+ {{ rv.titul }}MM
+ {% endif %}
+ {{ rv.resitel.osoba.plne_jmeno }}
+ {% for b in rv.body_problemy_sezn %}
+ | {{ b }}
+
+ {# TODELETE #}
+ {% for body_podproblemu in rv.body_podproblemy_iter.next %}
+ | {{ body_podproblemu }}
+ {% endfor %}
+ {# TODELETE #}
+
+ {% endfor %}
+ | {{ rv.body_cislo }}
+ | {{ rv.body_rocnik }}
+ | {{ rv.body_celkem_odjakziva }}
+ |
+ {% endfor %}
+
+
+{# TODELETE #}
+
+{# TODELETE #}
diff --git a/seminar/templates/seminar/vysledkovka_rocnik.html b/vysledkovky/templates/vysledkovky/vysledkovka_rocnik.html
similarity index 100%
rename from seminar/templates/seminar/vysledkovka_rocnik.html
rename to vysledkovky/templates/vysledkovky/vysledkovka_rocnik.html
diff --git a/vysledkovky/templates/vysledkovky/vysledkovka_rocnik_neverejna.html b/vysledkovky/templates/vysledkovky/vysledkovka_rocnik_neverejna.html
new file mode 100644
index 00000000..82871f07
--- /dev/null
+++ b/vysledkovky/templates/vysledkovky/vysledkovka_rocnik_neverejna.html
@@ -0,0 +1 @@
+{% include "vysledkovky/vysledkovka_rocnik.html" with radky_vysledkovky=radky_vysledkovky_s_neverejnymi cisla=cisla_s_neverejnymi %}
\ No newline at end of file
diff --git a/seminar/views/vysledkovka.py b/vysledkovky/utils.py
similarity index 97%
rename from seminar/views/vysledkovka.py
rename to vysledkovky/utils.py
index 182943b0..e637b587 100644
--- a/seminar/views/vysledkovka.py
+++ b/vysledkovky/utils.py
@@ -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__())
+ )
diff --git a/vysledkovky/views.py b/vysledkovky/views.py
new file mode 100644
index 00000000..e5307bba
--- /dev/null
+++ b/vysledkovky/views.py
@@ -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