|
@ -11,8 +11,8 @@ from django.db.models import Q |
|
|
from django.views.decorators.csrf import ensure_csrf_cookie |
|
|
from django.views.decorators.csrf import ensure_csrf_cookie |
|
|
from django.contrib.auth import authenticate, login |
|
|
from django.contrib.auth import authenticate, login |
|
|
|
|
|
|
|
|
from .models import Problem, Cislo, Reseni, Nastaveni, Rocnik, Soustredeni, Organizator, Resitel, Novinky, Soustredeni_Ucastnici, Pohadka, Prispevek |
|
|
from .models import Problem, Cislo, Reseni, Nastaveni, Rocnik, Soustredeni, Organizator, Resitel, Novinky, Soustredeni_Ucastnici, Pohadka, Tema, Clanek |
|
|
from .models import VysledkyZaCislo, VysledkyKCisluZaRocnik, VysledkyKCisluOdjakziva |
|
|
#from .models import VysledkyZaCislo, VysledkyKCisluZaRocnik, VysledkyKCisluOdjakziva |
|
|
from . import utils |
|
|
from . import utils |
|
|
from .unicodecsv import UnicodeWriter |
|
|
from .unicodecsv import UnicodeWriter |
|
|
from .forms import NameForm |
|
|
from .forms import NameForm |
|
@ -68,29 +68,29 @@ def ZadaniTemataView(request): |
|
|
) |
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def ZadaniAktualniVysledkovkaView(request): |
|
|
#def ZadaniAktualniVysledkovkaView(request): |
|
|
nastaveni = get_object_or_404(Nastaveni) |
|
|
# nastaveni = get_object_or_404(Nastaveni) |
|
|
# Aktualni verejna vysledkovka |
|
|
# # Aktualni verejna vysledkovka |
|
|
vysledkovka = vysledkovka_rocniku(nastaveni.aktualni_rocnik) |
|
|
# vysledkovka = vysledkovka_rocniku(nastaveni.aktualni_rocnik) |
|
|
# kdyz neni verejna vysledkovka, tak zobraz starou |
|
|
# # kdyz neni verejna vysledkovka, tak zobraz starou |
|
|
if not vysledkovka: |
|
|
# if not vysledkovka: |
|
|
try: |
|
|
# try: |
|
|
minuly_rocnik = Rocnik.objects.get( |
|
|
# minuly_rocnik = Rocnik.objects.get( |
|
|
prvni_rok=(nastaveni.aktualni_rocnik.prvni_rok-1)) |
|
|
# prvni_rok=(nastaveni.aktualni_rocnik.prvni_rok-1)) |
|
|
vysledkovka = vysledkovka_rocniku(minuly_rocnik) |
|
|
# vysledkovka = vysledkovka_rocniku(minuly_rocnik) |
|
|
except ObjectDoesNotExist: |
|
|
# except ObjectDoesNotExist: |
|
|
pass |
|
|
# pass |
|
|
# vysledkovka s neverejnyma vysledkama |
|
|
# # vysledkovka s neverejnyma vysledkama |
|
|
vysledkovka_s_neverejnymi = vysledkovka_rocniku(nastaveni.aktualni_rocnik, jen_verejne=False) |
|
|
# vysledkovka_s_neverejnymi = vysledkovka_rocniku(nastaveni.aktualni_rocnik, jen_verejne=False) |
|
|
return render( |
|
|
# return render( |
|
|
request, |
|
|
# request, |
|
|
'seminar/zadani/AktualniVysledkovka.html', |
|
|
# 'seminar/zadani/AktualniVysledkovka.html', |
|
|
{ |
|
|
# { |
|
|
'nastaveni': nastaveni, |
|
|
# 'nastaveni': nastaveni, |
|
|
'vysledkovka': vysledkovka, |
|
|
# 'vysledkovka': vysledkovka, |
|
|
'vysledkovka_s_neverejnymi': vysledkovka_s_neverejnymi, |
|
|
# 'vysledkovka_s_neverejnymi': vysledkovka_s_neverejnymi, |
|
|
} |
|
|
# } |
|
|
) |
|
|
# ) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### Titulni strana |
|
|
### Titulni strana |
|
@ -143,10 +143,10 @@ class StareNovinkyView(generic.ListView): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Organizatori |
|
|
# Organizatori |
|
|
def aktivniOrganizatori(rok=date.today().year): |
|
|
def aktivniOrganizatori(datum=date.today()): |
|
|
return Organizator.objects.exclude( |
|
|
return Organizator.objects.exclude( |
|
|
organizuje_do_roku__isnull=False, |
|
|
organizuje_do__isnull=False, |
|
|
organizuje_do_roku__lt=rok |
|
|
organizuje_do__lt=datum |
|
|
).order_by('user__first_name') |
|
|
).order_by('user__first_name') |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -165,7 +165,7 @@ class CojemamOrganizatoriStariView(generic.ListView): |
|
|
model = Organizator |
|
|
model = Organizator |
|
|
template_name = 'seminar/cojemam/organizatori.html' |
|
|
template_name = 'seminar/cojemam/organizatori.html' |
|
|
queryset = Organizator.objects.exclude( |
|
|
queryset = Organizator.objects.exclude( |
|
|
id__in=aktivniOrganizatori()).order_by('-organizuje_do_roku') |
|
|
id__in=aktivniOrganizatori()).order_by('-organizuje_do') |
|
|
|
|
|
|
|
|
### Archiv |
|
|
### Archiv |
|
|
|
|
|
|
|
@ -273,62 +273,62 @@ def sloupec_s_poradim(vysledky): |
|
|
return poradi_l |
|
|
return poradi_l |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def vysledkovka_rocniku(rocnik, jen_verejne=True): |
|
|
#def vysledkovka_rocniku(rocnik, jen_verejne=True): |
|
|
"""Přebírá ročník (např. context["rocnik"]) a vrací výsledkovou listinu ve |
|
|
# """Přebírá ročník (např. context["rocnik"]) a vrací výsledkovou listinu ve |
|
|
formě vhodné pro šablonu "seminar/vysledkovka_rocniku.html" |
|
|
# formě vhodné pro šablonu "seminar/vysledkovka_rocniku.html" |
|
|
""" |
|
|
# """ |
|
|
|
|
|
# |
|
|
#vyberu vsechny vysledky z rocniku |
|
|
# #vyberu vsechny vysledky z rocniku |
|
|
cisla_v_rocniku = VysledkyKCisluZaRocnik.objects.filter(cislo__rocnik=rocnik).order_by('cislo') |
|
|
# cisla_v_rocniku = VysledkyKCisluZaRocnik.objects.filter(cislo__rocnik=rocnik).order_by('cislo') |
|
|
if jen_verejne: |
|
|
# if jen_verejne: |
|
|
cisla_v_rocniku = cisla_v_rocniku.filter(cislo__verejna_vysledkovka=True) |
|
|
# cisla_v_rocniku = cisla_v_rocniku.filter(cislo__verejna_vysledkovka=True) |
|
|
|
|
|
# |
|
|
#pokud žádné nejsou, výsledkovka se nezobrazí |
|
|
# #pokud žádné nejsou, výsledkovka se nezobrazí |
|
|
if not cisla_v_rocniku: |
|
|
# if not cisla_v_rocniku: |
|
|
return None |
|
|
# return None |
|
|
|
|
|
# |
|
|
#vybere vsechny vysledky z posledniho (verejneho) cisla a setridi sestupne dle bodu |
|
|
# #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')) |
|
|
# vysledky = list(cisla_v_rocniku.filter(cislo = cisla_v_rocniku[0].cislo).order_by('-body', 'resitel__prijmeni', 'resitel__jmeno').select_related('resitel')) |
|
|
|
|
|
# |
|
|
class Vysledkovka: |
|
|
# class Vysledkovka: |
|
|
def __init__(self): |
|
|
# def __init__(self): |
|
|
self.rocnik = rocnik.rocnik |
|
|
# self.rocnik = rocnik.rocnik |
|
|
self.radky = [] |
|
|
# self.radky = [] |
|
|
self.cisla = [] |
|
|
# self.cisla = [] |
|
|
|
|
|
# |
|
|
vysledkovka = Vysledkovka() |
|
|
# vysledkovka = Vysledkovka() |
|
|
vysledkovka.cisla = (rocnik.verejne_vysledkovky_cisla() if jen_verejne else rocnik.cisla.all().order_by('cislo')) |
|
|
# vysledkovka.cisla = (rocnik.verejne_vysledkovky_cisla() if jen_verejne else rocnik.cisla.all().order_by('cislo')) |
|
|
|
|
|
# |
|
|
# doplníme některé údaje do řádků výsledkovky pro řešitele ve skupině |
|
|
# # doplníme některé údaje do řádků výsledkovky pro řešitele ve skupině |
|
|
for poradi, v in zip(sloupec_s_poradim(vysledky), vysledky): |
|
|
# for poradi, v in zip(sloupec_s_poradim(vysledky), vysledky): |
|
|
v.poradi = poradi |
|
|
# v.poradi = poradi |
|
|
v.resitel.rocnik = v.resitel.rocnik(rocnik) |
|
|
# v.resitel.rocnik = v.resitel.rocnik(rocnik) |
|
|
|
|
|
# |
|
|
verejne_vysl_odjakziva = VysledkyKCisluOdjakziva.objects.filter(cislo__rocnik=rocnik, cislo=cisla_v_rocniku[0].cislo) |
|
|
# verejne_vysl_odjakziva = VysledkyKCisluOdjakziva.objects.filter(cislo__rocnik=rocnik, cislo=cisla_v_rocniku[0].cislo) |
|
|
if jen_verejne: |
|
|
# if jen_verejne: |
|
|
verejne_vysl_odjakziva = verejne_vysl_odjakziva.filter(cislo__verejna_vysledkovka=True) |
|
|
# verejne_vysl_odjakziva = verejne_vysl_odjakziva.filter(cislo__verejna_vysledkovka=True) |
|
|
|
|
|
# |
|
|
v.body_odjakziva = verejne_vysl_odjakziva.filter(resitel = v.resitel)[0].body |
|
|
# v.body_odjakziva = verejne_vysl_odjakziva.filter(resitel = v.resitel)[0].body |
|
|
v.titul = v.resitel.get_titul(v.body_odjakziva) |
|
|
# v.titul = v.resitel.get_titul(v.body_odjakziva) |
|
|
v.body_rocnik = v.body |
|
|
# v.body_rocnik = v.body |
|
|
v.body_cisla = [] |
|
|
# v.body_cisla = [] |
|
|
|
|
|
# |
|
|
#pokud pro dany rok a cislo nema resitel vysledky, ma defaultne 0 |
|
|
# #pokud pro dany rok a cislo nema resitel vysledky, ma defaultne 0 |
|
|
for cis in vysledkovka.cisla: |
|
|
# for cis in vysledkovka.cisla: |
|
|
if not jen_verejne or cis.verejna_vysledkovka: |
|
|
# if not jen_verejne or cis.verejna_vysledkovka: |
|
|
#seznam vysledku se spravnym rocnikem a cislem pro resitele |
|
|
# #seznam vysledku se spravnym rocnikem a cislem pro resitele |
|
|
#zobrazim jen je-li vysledkovka verejna |
|
|
# #zobrazim jen je-li vysledkovka verejna |
|
|
body_za_cislo = VysledkyZaCislo.objects.filter(cislo__rocnik=rocnik).filter(cislo = cis).filter(resitel = v.resitel) |
|
|
# body_za_cislo = VysledkyZaCislo.objects.filter(cislo__rocnik=rocnik).filter(cislo = cis).filter(resitel = v.resitel) |
|
|
if body_za_cislo: |
|
|
# if body_za_cislo: |
|
|
#neprazdne vysledky by mely obsahovat prave jeden vysledek |
|
|
# #neprazdne vysledky by mely obsahovat prave jeden vysledek |
|
|
v.body_cisla.append(body_za_cislo[0].body) |
|
|
# v.body_cisla.append(body_za_cislo[0].body) |
|
|
else: |
|
|
# else: |
|
|
#resitel nema za cislo body |
|
|
# #resitel nema za cislo body |
|
|
v.body_cisla.append(0) |
|
|
# v.body_cisla.append(0) |
|
|
|
|
|
# |
|
|
vysledkovka.radky.append(v) |
|
|
# vysledkovka.radky.append(v) |
|
|
|
|
|
# |
|
|
return vysledkovka |
|
|
# return vysledkovka |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class RocnikView(generic.DetailView): |
|
|
class RocnikView(generic.DetailView): |
|
@ -352,8 +352,8 @@ 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) |
|
|
|
|
|
|
|
|
context['vysledkovka'] = vysledkovka_rocniku(context["rocnik"]) |
|
|
#context['vysledkovka'] = vysledkovka_rocniku(context["rocnik"]) |
|
|
context['vysledkovka_s_neverejnymi'] = vysledkovka_rocniku(context["rocnik"], jen_verejne=False) |
|
|
#context['vysledkovka_s_neverejnymi'] = vysledkovka_rocniku(context["rocnik"], jen_verejne=False) |
|
|
context['temata_v_rocniku'] = verejna_temata(context["rocnik"]) |
|
|
context['temata_v_rocniku'] = verejna_temata(context["rocnik"]) |
|
|
|
|
|
|
|
|
return context |
|
|
return context |
|
@ -377,151 +377,152 @@ class ProblemView(generic.DetailView): |
|
|
context['reseni'] = Reseni.objects.filter(problem=context['problem']).select_related('resitel').order_by('resitel__prijmeni') |
|
|
context['reseni'] = Reseni.objects.filter(problem=context['problem']).select_related('resitel').order_by('resitel__prijmeni') |
|
|
return context |
|
|
return context |
|
|
|
|
|
|
|
|
class PrispevekView(generic.DetailView): |
|
|
## Prispevek byl zrusen, mozna ale bude podobny nahled na neco jineho. |
|
|
model = Prispevek |
|
|
#class PrispevekView(generic.DetailView): |
|
|
template_name = 'seminar/archiv/prispevek.html' |
|
|
# model = Prispevek |
|
|
|
|
|
# template_name = 'seminar/archiv/prispevek.html' |
|
|
# Vlastni ziskavani objektu z databaze podle prispevku |
|
|
# |
|
|
# pokud je prispevek neverejny zobrazi se jenom orgum |
|
|
# # Vlastni ziskavani objektu z databaze podle prispevku |
|
|
def get_object(self, queryset=None): |
|
|
# # pokud je prispevek neverejny zobrazi se jenom orgum |
|
|
if queryset is None: |
|
|
# def get_object(self, queryset=None): |
|
|
queryset = self.get_queryset() |
|
|
# if queryset is None: |
|
|
problem_arg = self.kwargs.get('pk') |
|
|
# queryset = self.get_queryset() |
|
|
prispevek_arg = self.kwargs.get('prispevek') |
|
|
# problem_arg = self.kwargs.get('pk') |
|
|
queryset = queryset.filter(pk=prispevek_arg) |
|
|
# prispevek_arg = self.kwargs.get('prispevek') |
|
|
|
|
|
# queryset = queryset.filter(pk=prispevek_arg) |
|
|
try: |
|
|
# |
|
|
obj = queryset.get() |
|
|
# try: |
|
|
except queryset.model.DoesNotExist: |
|
|
# obj = queryset.get() |
|
|
raise Http404(_("No %(verbose_name)s found matching the query") % |
|
|
# except queryset.model.DoesNotExist: |
|
|
{'verbose_name': queryset.model._meta.verbose_name}) |
|
|
# raise Http404(_("No %(verbose_name)s found matching the query") % |
|
|
|
|
|
# {'verbose_name': queryset.model._meta.verbose_name}) |
|
|
if self.request.user.is_staff or obj.zverejnit: |
|
|
# |
|
|
return obj |
|
|
# if self.request.user.is_staff or obj.zverejnit: |
|
|
else: |
|
|
# return obj |
|
|
raise Http404() |
|
|
# else: |
|
|
|
|
|
# raise Http404() |
|
|
def get_context_data(self, **kwargs): |
|
|
# |
|
|
context = super(PrispevekView, self).get_context_data(**kwargs) |
|
|
# def get_context_data(self, **kwargs): |
|
|
# snaho o ziskani titulu |
|
|
# context = super(PrispevekView, self).get_context_data(**kwargs) |
|
|
titul = '' |
|
|
# # snaho o ziskani titulu |
|
|
try: |
|
|
# titul = '' |
|
|
resitel = context['prispevek'].reseni.resitel |
|
|
# try: |
|
|
cislo = context['prispevek'].reseni.cislo_body |
|
|
# resitel = context['prispevek'].reseni.resitel |
|
|
body = VysledkyKCisluOdjakziva.objects.get(resitel=resitel, |
|
|
# cislo = context['prispevek'].reseni.cislo_body |
|
|
cislo=cislo).body |
|
|
# body = VysledkyKCisluOdjakziva.objects.get(resitel=resitel, |
|
|
titul = resitel.get_titul(body) |
|
|
# cislo=cislo).body |
|
|
except: |
|
|
# titul = resitel.get_titul(body) |
|
|
pass |
|
|
# except: |
|
|
context['titul'] = titul |
|
|
# pass |
|
|
return context |
|
|
# context['titul'] = titul |
|
|
|
|
|
# return context |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class RadekVysledkovky(object): |
|
|
class RadekVysledkovky(object): |
|
|
pass |
|
|
pass |
|
|
|
|
|
|
|
|
class CisloView(generic.DetailView): |
|
|
#class CisloView(generic.DetailView): |
|
|
model = Cislo |
|
|
# model = Cislo |
|
|
template_name = 'seminar/archiv/cislo.html' |
|
|
# template_name = 'seminar/archiv/cislo.html' |
|
|
|
|
|
# |
|
|
# Vlastni ziskavani objektu z databaze podle (Rocnik.rocnik) |
|
|
# # Vlastni ziskavani objektu z databaze podle (Rocnik.rocnik) |
|
|
def get_object(self, queryset=None): |
|
|
# def get_object(self, queryset=None): |
|
|
if queryset is None: |
|
|
# if queryset is None: |
|
|
queryset = self.get_queryset() |
|
|
# queryset = self.get_queryset() |
|
|
rocnik_arg = self.kwargs.get('rocnik') |
|
|
# rocnik_arg = self.kwargs.get('rocnik') |
|
|
cislo_arg = self.kwargs.get('cislo') |
|
|
# cislo_arg = self.kwargs.get('cislo') |
|
|
queryset = queryset.filter(rocnik__rocnik=rocnik_arg, cislo=cislo_arg) |
|
|
# queryset = queryset.filter(rocnik__rocnik=rocnik_arg, cislo=cislo_arg) |
|
|
|
|
|
# |
|
|
try: |
|
|
# try: |
|
|
obj = queryset.get() |
|
|
# obj = queryset.get() |
|
|
except queryset.model.DoesNotExist: |
|
|
# except queryset.model.DoesNotExist: |
|
|
raise Http404(_("No %(verbose_name)s found matching the query") % |
|
|
# raise Http404(_("No %(verbose_name)s found matching the query") % |
|
|
{'verbose_name': queryset.model._meta.verbose_name}) |
|
|
# {'verbose_name': queryset.model._meta.verbose_name}) |
|
|
return obj |
|
|
# return obj |
|
|
|
|
|
# |
|
|
|
|
|
# |
|
|
def get_context_data(self, **kwargs): |
|
|
# def get_context_data(self, **kwargs): |
|
|
context = super(CisloView, self).get_context_data(**kwargs) |
|
|
# context = super(CisloView, self).get_context_data(**kwargs) |
|
|
|
|
|
# |
|
|
vysledky = VysledkyKCisluZaRocnik.objects.filter(cislo = context['cislo']).order_by('-body', 'resitel__prijmeni', 'resitel__jmeno') |
|
|
# 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") |
|
|
# reseni = Reseni.objects.filter(cislo_body = context['cislo']).select_related("resitel") |
|
|
|
|
|
# |
|
|
# typy úloh, které se mají zobrazovat u čísla, tj. těch, které byly v čísle skutečně zadány |
|
|
# # typy úloh, které se mají zobrazovat u čísla, tj. těch, které byly v čísle skutečně zadány |
|
|
typy_skutecne_zadanych = [Problem.TYP_ULOHA, Problem.TYP_SERIAL, Problem.TYP_ORG_CLANEK] |
|
|
# typy_skutecne_zadanych = [Problem.TYP_ULOHA, Problem.TYP_SERIAL, Problem.TYP_ORG_CLANEK] |
|
|
v_cisle_zadane = Problem.objects.filter(cislo_zadani=context['cislo']).filter(typ__in=typy_skutecne_zadanych).order_by('kod') |
|
|
# v_cisle_zadane = Problem.objects.filter(cislo_zadani=context['cislo']).filter(typ__in=typy_skutecne_zadanych).order_by('kod') |
|
|
|
|
|
# |
|
|
resene_problemy = Problem.objects.filter(cislo_reseni=context['cislo']).filter(typ__in=typy_skutecne_zadanych).order_by('cislo_zadani__cislo', 'kod') |
|
|
# resene_problemy = Problem.objects.filter(cislo_reseni=context['cislo']).filter(typ__in=typy_skutecne_zadanych).order_by('cislo_zadani__cislo', 'kod') |
|
|
|
|
|
# |
|
|
poradi_typu = { |
|
|
# poradi_typu = { |
|
|
Problem.TYP_ULOHA: 1, |
|
|
# Problem.TYP_ULOHA: 1, |
|
|
Problem.TYP_SERIAL: 2, |
|
|
# Problem.TYP_SERIAL: 2, |
|
|
Problem.TYP_ORG_CLANEK: 3, |
|
|
# Problem.TYP_ORG_CLANEK: 3, |
|
|
Problem.TYP_TEMA: 4, |
|
|
# Problem.TYP_TEMA: 4, |
|
|
Problem.TYP_RES_CLANEK: 5 |
|
|
# Problem.TYP_RES_CLANEK: 5 |
|
|
} |
|
|
# } |
|
|
problemy = sorted(set(r.problem for r in reseni), key=lambda x:(poradi_typu[x.typ], x.kod_v_rocniku())) |
|
|
# problemy = sorted(set(r.problem for r in reseni), key=lambda x:(poradi_typu[x.typ], x.kod_v_rocniku())) |
|
|
#setridi problemy podle typu a poradi zadani |
|
|
# #setridi problemy podle typu a poradi zadani |
|
|
problem_index = {} |
|
|
# problem_index = {} |
|
|
for i in range(len(problemy)): |
|
|
# for i in range(len(problemy)): |
|
|
problem_index[problemy[i].id] = i |
|
|
# problem_index[problemy[i].id] = i |
|
|
#umoznuje zjistit index podle id problemu |
|
|
# #umoznuje zjistit index podle id problemu |
|
|
|
|
|
# |
|
|
vysledky_resitele = {} |
|
|
# vysledky_resitele = {} |
|
|
vysledkovka = [] |
|
|
# vysledkovka = [] |
|
|
|
|
|
# |
|
|
# doplníme některé údaje do řádků výsledkovky pro řešitele ve skupině |
|
|
# # doplníme některé údaje do řádků výsledkovky pro řešitele ve skupině |
|
|
for poradi, v in zip(sloupec_s_poradim(vysledky), vysledky): |
|
|
# for poradi, v in zip(sloupec_s_poradim(vysledky), vysledky): |
|
|
v.poradi = poradi |
|
|
# v.poradi = poradi |
|
|
v.body_celkem_rocnik = v.body |
|
|
# v.body_celkem_rocnik = v.body |
|
|
v.body_celkem_odjakziva = VysledkyKCisluOdjakziva.objects.get(resitel=v.resitel, cislo=context['cislo']).body |
|
|
# v.body_celkem_odjakziva = VysledkyKCisluOdjakziva.objects.get(resitel=v.resitel, cislo=context['cislo']).body |
|
|
v.resitel.rocnik = v.resitel.rocnik(v.cislo.rocnik) |
|
|
# v.resitel.rocnik = v.resitel.rocnik(v.cislo.rocnik) |
|
|
|
|
|
# |
|
|
# je tady '', aby se nezobrazovala 0, pokud se řešitel o řešení úlohy ani nepokusil |
|
|
# # je tady '', aby se nezobrazovala 0, pokud se řešitel o řešení úlohy ani nepokusil |
|
|
v.body_ulohy = [''] * len(problemy) |
|
|
# v.body_ulohy = [''] * len(problemy) |
|
|
|
|
|
# |
|
|
v.titul = v.resitel.get_titul(v.body_celkem_odjakziva) |
|
|
# v.titul = v.resitel.get_titul(v.body_celkem_odjakziva) |
|
|
|
|
|
# |
|
|
body_cislo_q = VysledkyZaCislo.objects.filter(resitel=v.resitel, cislo=context['cislo']) |
|
|
# body_cislo_q = VysledkyZaCislo.objects.filter(resitel=v.resitel, cislo=context['cislo']) |
|
|
v.body_cislo = body_cislo_q[0].body if body_cislo_q else 0 |
|
|
# v.body_cislo = body_cislo_q[0].body if body_cislo_q else 0 |
|
|
|
|
|
# |
|
|
vysledkovka.append(v) |
|
|
# vysledkovka.append(v) |
|
|
|
|
|
# |
|
|
# připravíme si odkaz na řádek, abychom do něj mohli doplnit body za jednotlivé úlohy |
|
|
# # připravíme si odkaz na řádek, abychom do něj mohli doplnit body za jednotlivé úlohy |
|
|
vysledky_resitele[v.resitel.id] = v |
|
|
# vysledky_resitele[v.resitel.id] = v |
|
|
|
|
|
# |
|
|
# za každé řešení doplníme k příslušnému řešiteli a úloze body |
|
|
# # za každé řešení doplníme k příslušnému řešiteli a úloze body |
|
|
for r in reseni: |
|
|
# for r in reseni: |
|
|
vysledky_resitele[r.resitel.id].body_ulohy[problem_index[r.problem.id]] = r.body |
|
|
# vysledky_resitele[r.resitel.id].body_ulohy[problem_index[r.problem.id]] = r.body |
|
|
|
|
|
# |
|
|
context['vysledkovka'] = vysledkovka |
|
|
# context['vysledkovka'] = vysledkovka |
|
|
context['problemy'] = problemy |
|
|
# context['problemy'] = problemy |
|
|
context['v_cisle_zadane'] = v_cisle_zadane |
|
|
# context['v_cisle_zadane'] = v_cisle_zadane |
|
|
context['resene_problemy'] = resene_problemy |
|
|
# context['resene_problemy'] = resene_problemy |
|
|
return context |
|
|
# return context |
|
|
|
|
|
|
|
|
class ArchivTemataView(generic.ListView): |
|
|
class ArchivTemataView(generic.ListView): |
|
|
model = Problem |
|
|
model = Problem |
|
|
template_name = 'seminar/archiv/temata.html' |
|
|
template_name = 'seminar/archiv/temata.html' |
|
|
queryset = Problem.objects.filter(typ=Problem.TYP_TEMA, stav=Problem.STAV_ZADANY).select_related('cislo_zadani__rocnik').order_by('-cislo_zadani__rocnik__rocnik', 'kod') |
|
|
queryset = Tema.objects.filter(stav=Problem.STAV_ZADANY).select_related('cislo_zadani__rocnik').order_by('-cislo_zadani__rocnik__rocnik', 'kod') |
|
|
|
|
|
|
|
|
### Generovani vysledkovky |
|
|
### Generovani vysledkovky |
|
|
|
|
|
|
|
|
class CisloVysledkovkaView(CisloView): |
|
|
#class CisloVysledkovkaView(CisloView): |
|
|
model = Cislo |
|
|
# model = Cislo |
|
|
template_name = 'seminar/archiv/cislo_vysledkovka.tex' |
|
|
# template_name = 'seminar/archiv/cislo_vysledkovka.tex' |
|
|
#content_type = 'application/x-tex; charset=UTF8' |
|
|
# #content_type = 'application/x-tex; charset=UTF8' |
|
|
#umozni rovnou stahnout TeXovsky dokument |
|
|
# #umozni rovnou stahnout TeXovsky dokument |
|
|
content_type = 'text/plain; charset=UTF8' |
|
|
# content_type = 'text/plain; charset=UTF8' |
|
|
#vypise na stranku textovy obsah vyTeXane vysledkovky k okopirovani |
|
|
# #vypise na stranku textovy obsah vyTeXane vysledkovky k okopirovani |
|
|
|
|
|
# |
|
|
class RocnikVysledkovkaView(RocnikView): |
|
|
#class RocnikVysledkovkaView(RocnikView): |
|
|
model = Rocnik |
|
|
# model = Rocnik |
|
|
template_name = 'seminar/archiv/rocnik_vysledkovka.tex' |
|
|
# template_name = 'seminar/archiv/rocnik_vysledkovka.tex' |
|
|
#content_type = 'application/x-tex; charset=UTF8' |
|
|
# #content_type = 'application/x-tex; charset=UTF8' |
|
|
#umozni rovnou stahnout TeXovsky dokument |
|
|
# #umozni rovnou stahnout TeXovsky dokument |
|
|
content_type = 'text/plain; charset=UTF8' |
|
|
# content_type = 'text/plain; charset=UTF8' |
|
|
#vypise na stranku textovy obsah vyTeXane vysledkovky k okopirovani |
|
|
# #vypise na stranku textovy obsah vyTeXane vysledkovky k okopirovani |
|
|
|
|
|
|
|
|
### Generovani obalek |
|
|
### Generovani obalek |
|
|
class CisloObalkyStruct: |
|
|
class CisloObalkyStruct: |
|
@ -601,28 +602,29 @@ def obalkovaniView(request, rocnik, cislo): |
|
|
### Tituly |
|
|
### Tituly |
|
|
|
|
|
|
|
|
# TODO udelat neco jako get_objects_or_404 |
|
|
# TODO udelat neco jako get_objects_or_404 |
|
|
def TitulyView(request, rocnik, cislo): |
|
|
# FIXME: prepsat, aby nepouzivalo VysledkyK... |
|
|
rocnik_obj = Rocnik.objects.get(rocnik = rocnik) |
|
|
#def TitulyView(request, rocnik, cislo): |
|
|
resitele = Resitel.objects.filter(rok_maturity__gte = rocnik_obj.prvni_rok) |
|
|
# rocnik_obj = Rocnik.objects.get(rocnik = rocnik) |
|
|
cislo_obj = Cislo.objects.get(rocnik = rocnik_obj, cislo = cislo) |
|
|
# resitele = Resitel.objects.filter(rok_maturity__gte = rocnik_obj.prvni_rok) |
|
|
|
|
|
# cislo_obj = Cislo.objects.get(rocnik = rocnik_obj, cislo = cislo) |
|
|
asciijmena = [] |
|
|
# |
|
|
broken = False |
|
|
# asciijmena = [] |
|
|
|
|
|
# broken = False |
|
|
for resitel in resitele: |
|
|
# |
|
|
try: |
|
|
# for resitel in resitele: |
|
|
vys = VysledkyKCisluOdjakziva.objects.get(resitel = resitel, cislo = cislo_obj) |
|
|
# try: |
|
|
body = vys.body |
|
|
# vys = VysledkyKCisluOdjakziva.objects.get(resitel = resitel, cislo = cislo_obj) |
|
|
except ObjectDoesNotExist: |
|
|
# body = vys.body |
|
|
body = 0 |
|
|
# except ObjectDoesNotExist: |
|
|
resitel.titul = resitel.get_titul(body) |
|
|
# body = 0 |
|
|
resitel.ascii = unicodedata.normalize('NFKD',resitel.jmeno+resitel.prijmeni).encode("ascii","ignore").replace(" ","") |
|
|
# resitel.titul = resitel.get_titul(body) |
|
|
if resitel.ascii not in asciijmena: |
|
|
# resitel.ascii = unicodedata.normalize('NFKD',resitel.jmeno+resitel.prijmeni).encode("ascii","ignore").replace(" ","") |
|
|
asciijmena.append(resitel.ascii) |
|
|
# if resitel.ascii not in asciijmena: |
|
|
else: |
|
|
# asciijmena.append(resitel.ascii) |
|
|
broken = True |
|
|
# else: |
|
|
|
|
|
# broken = True |
|
|
return render(request, 'seminar/archiv/tituly.tex',{'resitele': resitele,'broken':broken},content_type="text/plain") |
|
|
# |
|
|
|
|
|
# return render(request, 'seminar/archiv/tituly.tex',{'resitele': resitele,'broken':broken},content_type="text/plain") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### Soustredeni |
|
|
### Soustredeni |
|
@ -702,15 +704,17 @@ def soustredeniUcastniciExportView(request,soustredeni): |
|
|
|
|
|
|
|
|
### Články |
|
|
### Články |
|
|
|
|
|
|
|
|
|
|
|
# FIXME: clanky jsou vsechny, pokud budou i neresitelske, tak se take zobrazi |
|
|
class ClankyResitelView(generic.ListView): |
|
|
class ClankyResitelView(generic.ListView): |
|
|
model = Problem |
|
|
model = Problem |
|
|
template_name = 'seminar/clanky/resitelske_clanky.html' |
|
|
template_name = 'seminar/clanky/resitelske_clanky.html' |
|
|
queryset = Problem.objects.filter(typ=Problem.TYP_RES_CLANEK, stav=Problem.STAV_ZADANY).select_related('cislo_zadani__rocnik').order_by('-cislo_zadani__rocnik__rocnik', 'kod') |
|
|
queryset = Clanek.objects.filter(stav=Problem.STAV_ZADANY).select_related('cislo_zadani__rocnik').order_by('-cislo_zadani__rocnik__rocnik', 'kod') |
|
|
|
|
|
|
|
|
class ClankyOrganizatorView(generic.ListView): |
|
|
# FIXME: pokud chceme orgoclanky, tak nejak zavest do modelu a podle toho odkomentovat a upravit |
|
|
model = Problem |
|
|
#class ClankyOrganizatorView(generic.ListView)<F12>: |
|
|
template_name = 'seminar/clanky/organizatorske_clanky.html' |
|
|
# model = Problem |
|
|
queryset = Problem.objects.filter(typ=Problem.TYP_ORG_CLANEK, stav=Problem.STAV_ZADANY).select_related('cislo_zadani__rocnik').order_by('-cislo_zadani__rocnik__rocnik', 'kod') |
|
|
# template_name = 'seminar/clanky/organizatorske_clanky.html' |
|
|
|
|
|
# queryset = Problem.objects.filter(stav=Problem.STAV_ZADANY).select_related('cislo_zadani__rocnik').order_by('-cislo_zadani__rocnik__rocnik', 'kod') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### Status |
|
|
### Status |
|
@ -876,7 +880,7 @@ def texUploadView(request): |
|
|
|
|
|
|
|
|
return JsonResponse({"db_id": pohadka.id}) |
|
|
return JsonResponse({"db_id": pohadka.id}) |
|
|
|
|
|
|
|
|
except Exception, e: |
|
|
except Exception as e: |
|
|
# Pošleme zpátky traceback, ať uživatel ví, v čem je problém |
|
|
# Pošleme zpátky traceback, ať uživatel ví, v čem je problém |
|
|
tb = "".join(traceback.format_exception(type(e), e, sys.exc_info()[2])) |
|
|
tb = "".join(traceback.format_exception(type(e), e, sys.exc_info()[2])) |
|
|
return JsonResponse({"error": tb}) |
|
|
return JsonResponse({"error": tb}) |
|
|