diff --git a/galerie/admin.py b/galerie/admin.py index 168a839c..98c83ea9 100644 --- a/galerie/admin.py +++ b/galerie/admin.py @@ -39,7 +39,7 @@ class GalerieInline(admin.TabularInline): class ObrazekAdmin(admin.ModelAdmin): list_display = ('obrazek_velky', 'nazev', 'popis', 'obrazek_maly_tag') - + class GalerieAdmin(admin.ModelAdmin): form = autocomplete_light.modelform_factory(Galerie, autocomplete_fields=['titulni_obrazek'], fields=['titulni_obrazek']) model = Galerie diff --git a/korektury/models.py b/korektury/models.py index 9b7929ce..ab9cf62f 100644 --- a/korektury/models.py +++ b/korektury/models.py @@ -38,7 +38,7 @@ class KorekturovanePDF(models.Model): verbose_name_plural = u'PDF k opravám' #Interní ID - id = models.AutoField(primary_key = True) + id = models.AutoField(primary_key = True) cas = models.DateTimeField(u'čas vložení PDF',default=timezone.now,help_text = 'Čas vložení PDF') @@ -65,8 +65,8 @@ class KorekturovanePDF(models.Model): ) status = models.CharField(u'stav PDF',max_length=16, choices=STATUS_CHOICES, blank=False, default = STATUS_PRIDAVANI) - - + + #TODO Nepovinný foreign key k číslu def get_prefix(self): @@ -122,7 +122,7 @@ class Oprava(models.Model): ordering = ['y','x'] #Interní ID - id = models.AutoField(primary_key = True) + id = models.AutoField(primary_key = True) pdf = models.ForeignKey(KorekturovanePDF, default=-1) @@ -150,9 +150,9 @@ class Oprava(models.Model): text = models.TextField(u'text opravy',blank = True, help_text='Text opravy') -# def __init__(self,dictionary): -# for k,v in dictionary.items(): -# setattr(self,k,v) +# def __init__(self,dictionary): +# for k,v in dictionary.items(): +# setattr(self,k,v) def __str__(self): return force_unicode(u'%s od %s: %s'%(self.status,self.autor,self.text)) @@ -169,7 +169,7 @@ class Komentar(models.Model): ordering = ['cas'] #Interní ID - id = models.AutoField(primary_key = True) + id = models.AutoField(primary_key = True) cas = models.DateTimeField(u'čas komentáře',default=timezone.now,help_text = 'Čas zadání komentáře') diff --git a/prednasky/urls.py b/prednasky/urls.py index 94fcccdb..e00abea4 100644 --- a/prednasky/urls.py +++ b/prednasky/urls.py @@ -6,10 +6,10 @@ from . import views staff_member_required = user_passes_test(lambda u: u.is_staff) urlpatterns = [ - url(r'^prednasky/$', views.newPrednaska), - url(r'^prednasky/hotovo$', views.Prednaska_hotovo), - url(r'^prednasky/metaseznam_prednasek$', staff_member_required(views.MetaSeznamListView.as_view()), name='metaseznam-list'), - url(r'^prednasky/seznam_prednasek/(?P\d+)/$', staff_member_required(views.SeznamListView.as_view()), name='seznam-list'), - url(r'^prednasky/seznam_prednasek/(?P\d+)/export$', staff_member_required(views.SeznamExportView), name='seznam-export'), -# url(r'^korektury/help/', staff_member_required(views.KorekturyHelpView.as_view()), name='korektury-help'), + url(r'^prednasky/$', views.newPrednaska), + url(r'^prednasky/hotovo$', views.Prednaska_hotovo), + url(r'^prednasky/metaseznam_prednasek$', staff_member_required(views.MetaSeznamListView.as_view()), name='metaseznam-list'), + url(r'^prednasky/seznam_prednasek/(?P\d+)/$', staff_member_required(views.SeznamListView.as_view()), name='seznam-list'), + url(r'^prednasky/seznam_prednasek/(?P\d+)/export$', staff_member_required(views.SeznamExportView), name='seznam-export'), +# url(r'^korektury/help/', staff_member_required(views.KorekturyHelpView.as_view()), name='korektury-help'), ] diff --git a/seminar/admin.py b/seminar/admin.py index 024878d2..55a59c07 100644 --- a/seminar/admin.py +++ b/seminar/admin.py @@ -61,7 +61,7 @@ def field_labels(model, fieldname): def create_modeladmin(modeladmin, model, name = None, verbose_name = None, verbose_name_plural = None): - class Meta: + class Meta: proxy = True app_label = model._meta.app_label Meta.verbose_name = verbose_name @@ -96,8 +96,8 @@ class ResitelInline(admin.TabularInline): class CisloInline(admin.TabularInline): model = Cislo fields = ['cislo', - 'datum_vydani', 'datum_deadline', 'datum_deadline_soustredeni', - 'verejne_db', 'poznamka'] + 'datum_vydani', 'datum_deadline', 'datum_deadline_soustredeni', + 'verejne_db', 'poznamka'] readonly_fields = ['cislo'] extra = 0 formfield_overrides = { @@ -222,7 +222,7 @@ class ResitelAdmin(VersionAdmin): list_display = ['osoba__jmeno', 'osoba__prijmeni', 'osoba__user', 'osoba__pohlavi_muz', 'skola', 'rok_maturity', 'pocet_reseni'] list_filter = ['osoba__pohlavi_muz', 'rok_maturity', 'zasilat'] search_fields = ['osoba__jmeno', 'osoba__prijmeni', 'osoba__ulice', 'osoba__mesto', 'osoba__email'] -# inlines = [ReseniKResiteliInline] # FIXME: +# inlines = [ReseniKResiteliInline] # FIXME: view_on_site = False def osoba__jmeno(self, obj): @@ -291,7 +291,7 @@ class CisloAdmin(VersionAdmin): ] }), ('Data', {'fields': ['datum_vydani', 'datum_deadline', - 'datum_deadline_soustredeni']}), + 'datum_deadline_soustredeni']}), ] list_display = [ 'kod', @@ -338,14 +338,14 @@ admin.site.register(Rocnik, RocnikAdmin) ### PrilohaReseni # NOTE: Nemá pravděpodobně smysl používat # class PrilohaReseniAdmin(reversion.VersionAdmin): -# readonly_fields = ['timestamp', 'reseni'] -# fieldsets = [ -# (None, {'fields': ['reseni', 'soubor', 'timestamp']}), -# (u'Poznámky', {'fields': ['poznamka']}), -# ] -# list_display = ['reseni', 'soubor', 'timestamp'] -# list_filter = ['reseni', 'timestamp'] -# search_fields = [] +# readonly_fields = ['timestamp', 'reseni'] +# fieldsets = [ +# (None, {'fields': ['reseni', 'soubor', 'timestamp']}), +# (u'Poznámky', {'fields': ['poznamka']}), +# ] +# list_display = ['reseni', 'soubor', 'timestamp'] +# list_filter = ['reseni', 'timestamp'] +# search_fields = [] # # admin.site.register(PrilohaReseni, PrilohaReseniAdmin) @@ -567,18 +567,18 @@ class ProblemZadanyAdmin(ProblemAdmin): ### Prispevek (k tematkum) #class PrispevekAdminForm(forms.ModelForm): -# text_org = forms.CharField(widget=CKEditorUploadingWidget(), required=False, -# **field_labels(Prispevek, 'text_org')) -# text_resitel = forms.CharField(widget=CKEditorUploadingWidget(), required=False, -# **field_labels(Prispevek, 'text_resitel')) +# text_org = forms.CharField(widget=CKEditorUploadingWidget(), required=False, +# **field_labels(Prispevek, 'text_org')) +# text_resitel = forms.CharField(widget=CKEditorUploadingWidget(), required=False, +# **field_labels(Prispevek, 'text_resitel')) # -# class Meta: -# model = Prispevek -# exclude = [] +# class Meta: +# model = Prispevek +# exclude = [] # #class PrispevekAdmin(VersionAdmin): -# form = PrispevekAdminForm -# list_display = ['nazev', 'problem', 'reseni', 'zverejnit'] +# form = PrispevekAdminForm +# list_display = ['nazev', 'problem', 'reseni', 'zverejnit'] # #admin.site.register(Prispevek, PrispevekAdmin) @@ -619,7 +619,7 @@ class KonferaAdmin(VersionAdmin): form = KonferaAdminForm list_filter = ['soustredeni'] list_display = ['nazev','soustredeni','organizator','typ_prezentace'] -# inlines = [Konfera_UcastniciInline] +# inlines = [Konfera_UcastniciInline] admin.site.register(Konfera,KonferaAdmin) diff --git a/seminar/models.py b/seminar/models.py index bbeba051..34efcf56 100644 --- a/seminar/models.py +++ b/seminar/models.py @@ -402,7 +402,7 @@ class Cislo(SeminarModelBase): 'zveřejněna výsledkovka', default=False, help_text='Je-li false u veřejného čísla,\ - není výsledkovka zatím veřejná.') + není výsledkovka zatím veřejná.') poznamka = models.TextField('neveřejná poznámka', blank=True, help_text='Neveřejná poznámka k číslu (plain text)') @@ -830,7 +830,7 @@ class Hodnoceni(SeminarModelBase): # Django neumí jednoduše serializovat partial nebo třídu s __call__ # (https://docs.djangoproject.com/en/1.8/topics/migrations/), -# neprojdou pak migrace. Takže rozlišení funkcí generujících názvy souboru +# neprojdou pak migrace. Takže rozlišení funkcí generujících názvy souboru # podle adresáře řešíme takto. ## diff --git a/seminar/views.py b/seminar/views.py index fce826d8..3f01376f 100644 --- a/seminar/views.py +++ b/seminar/views.py @@ -69,28 +69,28 @@ def ZadaniTemataView(request): #def ZadaniAktualniVysledkovkaView(request): -# nastaveni = get_object_or_404(Nastaveni) -# # Aktualni verejna vysledkovka -# vysledkovka = vysledkovka_rocniku(nastaveni.aktualni_rocnik) -# # kdyz neni verejna vysledkovka, tak zobraz starou -# if not vysledkovka: -# try: -# minuly_rocnik = Rocnik.objects.get( -# prvni_rok=(nastaveni.aktualni_rocnik.prvni_rok-1)) -# vysledkovka = vysledkovka_rocniku(minuly_rocnik) -# except ObjectDoesNotExist: -# pass -# # vysledkovka s neverejnyma vysledkama -# vysledkovka_s_neverejnymi = vysledkovka_rocniku(nastaveni.aktualni_rocnik, jen_verejne=False) -# return render( -# request, -# 'seminar/zadani/AktualniVysledkovka.html', -# { -# 'nastaveni': nastaveni, -# 'vysledkovka': vysledkovka, -# 'vysledkovka_s_neverejnymi': vysledkovka_s_neverejnymi, -# } -# ) +# nastaveni = get_object_or_404(Nastaveni) +# # Aktualni verejna vysledkovka +# vysledkovka = vysledkovka_rocniku(nastaveni.aktualni_rocnik) +# # kdyz neni verejna vysledkovka, tak zobraz starou +# if not vysledkovka: +# try: +# minuly_rocnik = Rocnik.objects.get( +# prvni_rok=(nastaveni.aktualni_rocnik.prvni_rok-1)) +# vysledkovka = vysledkovka_rocniku(minuly_rocnik) +# except ObjectDoesNotExist: +# pass +# # vysledkovka s neverejnyma vysledkama +# vysledkovka_s_neverejnymi = vysledkovka_rocniku(nastaveni.aktualni_rocnik, jen_verejne=False) +# return render( +# request, +# 'seminar/zadani/AktualniVysledkovka.html', +# { +# 'nastaveni': nastaveni, +# 'vysledkovka': vysledkovka, +# 'vysledkovka_s_neverejnymi': vysledkovka_s_neverejnymi, +# } +# ) ### Titulni strana @@ -125,7 +125,7 @@ class TitulniStranaView(generic.ListView): context['deadline_soustredeni'] = deadline_soustredeni try: context['dead'] = datetime.combine(cas_deadline, - datetime.max.time()) + datetime.max.time()) context['ted'] = datetime.now() except: context['dead'] = None @@ -274,61 +274,61 @@ def sloupec_s_poradim(vysledky): #def vysledkovka_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" -# """ -# -# #vyberu vsechny vysledky z rocniku -# cisla_v_rocniku = VysledkyKCisluZaRocnik.objects.filter(cislo__rocnik=rocnik).order_by('cislo') -# if jen_verejne: -# cisla_v_rocniku = cisla_v_rocniku.filter(cislo__verejna_vysledkovka=True) -# -# #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')) -# -# class Vysledkovka: -# def __init__(self): -# self.rocnik = rocnik.rocnik -# self.radky = [] -# self.cisla = [] -# -# vysledkovka = Vysledkovka() -# 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ě -# 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__rocnik=rocnik, cislo=cisla_v_rocniku[0].cislo) -# if jen_verejne: -# verejne_vysl_odjakziva = verejne_vysl_odjakziva.filter(cislo__verejna_vysledkovka=True) -# -# 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 vysledkovka.cisla: -# if not jen_verejne or 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.radky.append(v) -# -# return vysledkovka +# """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 vysledky z rocniku +# cisla_v_rocniku = VysledkyKCisluZaRocnik.objects.filter(cislo__rocnik=rocnik).order_by('cislo') +# if jen_verejne: +# cisla_v_rocniku = cisla_v_rocniku.filter(cislo__verejna_vysledkovka=True) +# +# #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')) +# +# class Vysledkovka: +# def __init__(self): +# self.rocnik = rocnik.rocnik +# self.radky = [] +# self.cisla = [] +# +# vysledkovka = Vysledkovka() +# 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ě +# 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__rocnik=rocnik, cislo=cisla_v_rocniku[0].cislo) +# if jen_verejne: +# verejne_vysl_odjakziva = verejne_vysl_odjakziva.filter(cislo__verejna_vysledkovka=True) +# +# 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 vysledkovka.cisla: +# if not jen_verejne or 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.radky.append(v) +# +# return vysledkovka class RocnikView(generic.DetailView): @@ -346,7 +346,7 @@ class RocnikView(generic.DetailView): obj = queryset.get() except queryset.model.DoesNotExist: 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 def get_context_data(self, **kwargs): @@ -379,43 +379,43 @@ class ProblemView(generic.DetailView): ## Prispevek byl zrusen, mozna ale bude podobny nahled na neco jineho. #class PrispevekView(generic.DetailView): -# model = Prispevek -# template_name = 'seminar/archiv/prispevek.html' -# -# # Vlastni ziskavani objektu z databaze podle prispevku -# # pokud je prispevek neverejny zobrazi se jenom orgum -# def get_object(self, queryset=None): -# if queryset is None: -# queryset = self.get_queryset() -# problem_arg = self.kwargs.get('pk') -# prispevek_arg = self.kwargs.get('prispevek') -# queryset = queryset.filter(pk=prispevek_arg) -# -# try: -# obj = queryset.get() -# except queryset.model.DoesNotExist: -# 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 -# else: -# raise Http404() -# -# def get_context_data(self, **kwargs): -# context = super(PrispevekView, self).get_context_data(**kwargs) -# # snaho o ziskani titulu -# titul = '' -# try: -# resitel = context['prispevek'].reseni.resitel -# cislo = context['prispevek'].reseni.cislo_body -# body = VysledkyKCisluOdjakziva.objects.get(resitel=resitel, -# cislo=cislo).body -# titul = resitel.get_titul(body) -# except: -# pass -# context['titul'] = titul -# return context +# model = Prispevek +# template_name = 'seminar/archiv/prispevek.html' +# +# # Vlastni ziskavani objektu z databaze podle prispevku +# # pokud je prispevek neverejny zobrazi se jenom orgum +# def get_object(self, queryset=None): +# if queryset is None: +# queryset = self.get_queryset() +# problem_arg = self.kwargs.get('pk') +# prispevek_arg = self.kwargs.get('prispevek') +# queryset = queryset.filter(pk=prispevek_arg) +# +# try: +# obj = queryset.get() +# except queryset.model.DoesNotExist: +# 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 +# else: +# raise Http404() +# +# def get_context_data(self, **kwargs): +# context = super(PrispevekView, self).get_context_data(**kwargs) +# # snaho o ziskani titulu +# titul = '' +# try: +# resitel = context['prispevek'].reseni.resitel +# cislo = context['prispevek'].reseni.cislo_body +# body = VysledkyKCisluOdjakziva.objects.get(resitel=resitel, +# cislo=cislo).body +# titul = resitel.get_titul(body) +# except: +# pass +# context['titul'] = titul +# return context @@ -423,83 +423,83 @@ class RadekVysledkovky(object): pass #class CisloView(generic.DetailView): -# model = Cislo -# template_name = 'seminar/archiv/cislo.html' -# -# # Vlastni ziskavani objektu z databaze podle (Rocnik.rocnik) -# def get_object(self, queryset=None): -# if queryset is None: -# queryset = self.get_queryset() -# rocnik_arg = self.kwargs.get('rocnik') -# cislo_arg = self.kwargs.get('cislo') -# queryset = queryset.filter(rocnik__rocnik=rocnik_arg, cislo=cislo_arg) -# -# try: -# obj = queryset.get() -# except queryset.model.DoesNotExist: -# raise Http404(_("No %(verbose_name)s found matching the query") % -# {'verbose_name': queryset.model._meta.verbose_name}) -# return obj -# -# -# def get_context_data(self, **kwargs): -# context = super(CisloView, self).get_context_data(**kwargs) -# -# 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") -# -# # 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] -# 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') -# -# poradi_typu = { -# Problem.TYP_ULOHA: 1, -# Problem.TYP_SERIAL: 2, -# Problem.TYP_ORG_CLANEK: 3, -# Problem.TYP_TEMA: 4, -# 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())) -# #setridi problemy podle typu a poradi zadani -# problem_index = {} -# for i in range(len(problemy)): -# problem_index[problemy[i].id] = i -# #umoznuje zjistit index podle id problemu -# -# vysledky_resitele = {} -# 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.body_celkem_rocnik = v.body -# v.body_celkem_odjakziva = VysledkyKCisluOdjakziva.objects.get(resitel=v.resitel, cislo=context['cislo']).body -# 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 -# v.body_ulohy = [''] * len(problemy) -# -# v.titul = v.resitel.get_titul(v.body_celkem_odjakziva) -# -# 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 -# -# vysledkovka.append(v) -# -# # připravíme si odkaz na řádek, abychom do něj mohli doplnit body za jednotlivé úlohy -# vysledky_resitele[v.resitel.id] = v -# -# # za každé řešení doplníme k příslušnému řešiteli a úloze body -# for r in reseni: -# vysledky_resitele[r.resitel.id].body_ulohy[problem_index[r.problem.id]] = r.body -# -# context['vysledkovka'] = vysledkovka -# context['problemy'] = problemy -# context['v_cisle_zadane'] = v_cisle_zadane -# context['resene_problemy'] = resene_problemy -# return context +# model = Cislo +# template_name = 'seminar/archiv/cislo.html' +# +# # Vlastni ziskavani objektu z databaze podle (Rocnik.rocnik) +# def get_object(self, queryset=None): +# if queryset is None: +# queryset = self.get_queryset() +# rocnik_arg = self.kwargs.get('rocnik') +# cislo_arg = self.kwargs.get('cislo') +# queryset = queryset.filter(rocnik__rocnik=rocnik_arg, cislo=cislo_arg) +# +# try: +# obj = queryset.get() +# except queryset.model.DoesNotExist: +# raise Http404(_("No %(verbose_name)s found matching the query") % +# {'verbose_name': queryset.model._meta.verbose_name}) +# return obj +# +# +# def get_context_data(self, **kwargs): +# context = super(CisloView, self).get_context_data(**kwargs) +# +# 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") +# +# # 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] +# 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') +# +# poradi_typu = { +# Problem.TYP_ULOHA: 1, +# Problem.TYP_SERIAL: 2, +# Problem.TYP_ORG_CLANEK: 3, +# Problem.TYP_TEMA: 4, +# 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())) +# #setridi problemy podle typu a poradi zadani +# problem_index = {} +# for i in range(len(problemy)): +# problem_index[problemy[i].id] = i +# #umoznuje zjistit index podle id problemu +# +# vysledky_resitele = {} +# 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.body_celkem_rocnik = v.body +# v.body_celkem_odjakziva = VysledkyKCisluOdjakziva.objects.get(resitel=v.resitel, cislo=context['cislo']).body +# 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 +# v.body_ulohy = [''] * len(problemy) +# +# v.titul = v.resitel.get_titul(v.body_celkem_odjakziva) +# +# 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 +# +# vysledkovka.append(v) +# +# # připravíme si odkaz na řádek, abychom do něj mohli doplnit body za jednotlivé úlohy +# vysledky_resitele[v.resitel.id] = v +# +# # za každé řešení doplníme k příslušnému řešiteli a úloze body +# for r in reseni: +# vysledky_resitele[r.resitel.id].body_ulohy[problem_index[r.problem.id]] = r.body +# +# context['vysledkovka'] = vysledkovka +# context['problemy'] = problemy +# context['v_cisle_zadane'] = v_cisle_zadane +# context['resene_problemy'] = resene_problemy +# return context class ArchivTemataView(generic.ListView): model = Problem @@ -509,20 +509,20 @@ class ArchivTemataView(generic.ListView): ### Generovani vysledkovky #class CisloVysledkovkaView(CisloView): -# model = Cislo -# template_name = 'seminar/archiv/cislo_vysledkovka.tex' -# #content_type = 'application/x-tex; charset=UTF8' -# #umozni rovnou stahnout TeXovsky dokument -# content_type = 'text/plain; charset=UTF8' -# #vypise na stranku textovy obsah vyTeXane vysledkovky k okopirovani +# model = Cislo +# template_name = 'seminar/archiv/cislo_vysledkovka.tex' +# #content_type = 'application/x-tex; charset=UTF8' +# #umozni rovnou stahnout TeXovsky dokument +# content_type = 'text/plain; charset=UTF8' +# #vypise na stranku textovy obsah vyTeXane vysledkovky k okopirovani # #class RocnikVysledkovkaView(RocnikView): -# model = Rocnik -# template_name = 'seminar/archiv/rocnik_vysledkovka.tex' -# #content_type = 'application/x-tex; charset=UTF8' -# #umozni rovnou stahnout TeXovsky dokument -# content_type = 'text/plain; charset=UTF8' -# #vypise na stranku textovy obsah vyTeXane vysledkovky k okopirovani +# model = Rocnik +# template_name = 'seminar/archiv/rocnik_vysledkovka.tex' +# #content_type = 'application/x-tex; charset=UTF8' +# #umozni rovnou stahnout TeXovsky dokument +# content_type = 'text/plain; charset=UTF8' +# #vypise na stranku textovy obsah vyTeXane vysledkovky k okopirovani ### Generovani obalek class CisloObalkyStruct: @@ -534,8 +534,8 @@ class CisloObalkyStruct: def aktualniResitele(rocnik): letos = Rocnik.objects.get(rocnik = rocnik) return Resitel.objects.filter(rok_maturity__gt = letos.prvni_rok) -# # ALERT: pokud nekdo nema vypleny rok maturity, tak neni aktualni, protoze Karel Tesar a jini -# return Resitel.objects.filter(Q(rok_maturity__gt = letos.prvni_rok)|Q(rok_maturity = None)) +# # ALERT: pokud nekdo nema vypleny rok maturity, tak neni aktualni, protoze Karel Tesar a jini +# return Resitel.objects.filter(Q(rok_maturity__gt = letos.prvni_rok)|Q(rok_maturity = None)) # Vraci QuerySet aktivnich resitelu = # jeste neodmaturovali && @@ -604,27 +604,27 @@ def obalkovaniView(request, rocnik, cislo): # TODO udelat neco jako get_objects_or_404 # FIXME: prepsat, aby nepouzivalo VysledkyK... #def TitulyView(request, rocnik, cislo): -# rocnik_obj = Rocnik.objects.get(rocnik = rocnik) -# resitele = Resitel.objects.filter(rok_maturity__gte = rocnik_obj.prvni_rok) -# cislo_obj = Cislo.objects.get(rocnik = rocnik_obj, cislo = cislo) +# rocnik_obj = Rocnik.objects.get(rocnik = rocnik) +# 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: -# vys = VysledkyKCisluOdjakziva.objects.get(resitel = resitel, cislo = cislo_obj) -# body = vys.body -# except ObjectDoesNotExist: -# body = 0 -# resitel.titul = resitel.get_titul(body) -# resitel.ascii = unicodedata.normalize('NFKD',resitel.jmeno+resitel.prijmeni).encode("ascii","ignore").replace(" ","") -# if resitel.ascii not in asciijmena: -# asciijmena.append(resitel.ascii) -# else: -# broken = True +# for resitel in resitele: +# try: +# vys = VysledkyKCisluOdjakziva.objects.get(resitel = resitel, cislo = cislo_obj) +# body = vys.body +# except ObjectDoesNotExist: +# body = 0 +# resitel.titul = resitel.get_titul(body) +# resitel.ascii = unicodedata.normalize('NFKD',resitel.jmeno+resitel.prijmeni).encode("ascii","ignore").replace(" ","") +# if resitel.ascii not in asciijmena: +# asciijmena.append(resitel.ascii) +# 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 @@ -712,21 +712,21 @@ class ClankyResitelView(generic.ListView): # FIXME: pokud chceme orgoclanky, tak nejak zavest do modelu a podle toho odkomentovat a upravit #class ClankyOrganizatorView(generic.ListView): -# model = Problem -# 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') +# model = Problem +# 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 def StavDatabazeView(request): -# nastaveni = Nastaveni.objects.get() +# nastaveni = Nastaveni.objects.get() problemy = utils.seznam_problemu() muzi = Resitel.objects.filter(pohlavi_muz=True) zeny = Resitel.objects.filter(pohlavi_muz=False) return render(request, 'seminar/stav_databaze.html', { -# 'nastaveni': nastaveni, +# 'nastaveni': nastaveni, 'problemy': problemy, 'resitele': Resitel.objects.all(),