Browse Source

Další (snad poslední) opravy tabulátorů

export_seznamu_prednasek
LEdoian 6 years ago
parent
commit
25dc50e943
  1. 12
      korektury/models.py
  2. 12
      prednasky/urls.py
  3. 46
      seminar/admin.py
  4. 4
      seminar/models.py
  5. 460
      seminar/views.py

12
korektury/models.py

@ -38,7 +38,7 @@ class KorekturovanePDF(models.Model):
verbose_name_plural = u'PDF k opravám' verbose_name_plural = u'PDF k opravám'
#Interní ID #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') cas = models.DateTimeField(u'čas vložení PDF',default=timezone.now,help_text = 'Čas vložení PDF')
@ -122,7 +122,7 @@ class Oprava(models.Model):
ordering = ['y','x'] ordering = ['y','x']
#Interní ID #Interní ID
id = models.AutoField(primary_key = True) id = models.AutoField(primary_key = True)
pdf = models.ForeignKey(KorekturovanePDF, default=-1) 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') text = models.TextField(u'text opravy',blank = True, help_text='Text opravy')
# def __init__(self,dictionary): # def __init__(self,dictionary):
# for k,v in dictionary.items(): # for k,v in dictionary.items():
# setattr(self,k,v) # setattr(self,k,v)
def __str__(self): def __str__(self):
return force_unicode(u'%s od %s: %s'%(self.status,self.autor,self.text)) return force_unicode(u'%s od %s: %s'%(self.status,self.autor,self.text))
@ -169,7 +169,7 @@ class Komentar(models.Model):
ordering = ['cas'] ordering = ['cas']
#Interní ID #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') cas = models.DateTimeField(u'čas komentáře',default=timezone.now,help_text = 'Čas zadání komentáře')

12
prednasky/urls.py

@ -6,10 +6,10 @@ from . import views
staff_member_required = user_passes_test(lambda u: u.is_staff) staff_member_required = user_passes_test(lambda u: u.is_staff)
urlpatterns = [ urlpatterns = [
url(r'^prednasky/$', views.newPrednaska), url(r'^prednasky/$', views.newPrednaska),
url(r'^prednasky/hotovo$', views.Prednaska_hotovo), 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/metaseznam_prednasek$', staff_member_required(views.MetaSeznamListView.as_view()), name='metaseznam-list'),
url(r'^prednasky/seznam_prednasek/(?P<seznam>\d+)/$', staff_member_required(views.SeznamListView.as_view()), name='seznam-list'), url(r'^prednasky/seznam_prednasek/(?P<seznam>\d+)/$', staff_member_required(views.SeznamListView.as_view()), name='seznam-list'),
url(r'^prednasky/seznam_prednasek/(?P<seznam>\d+)/export$', staff_member_required(views.SeznamExportView), name='seznam-export'), url(r'^prednasky/seznam_prednasek/(?P<seznam>\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'^korektury/help/', staff_member_required(views.KorekturyHelpView.as_view()), name='korektury-help'),
] ]

46
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): def create_modeladmin(modeladmin, model, name = None, verbose_name = None, verbose_name_plural = None):
class Meta: class Meta:
proxy = True proxy = True
app_label = model._meta.app_label app_label = model._meta.app_label
Meta.verbose_name = verbose_name Meta.verbose_name = verbose_name
@ -96,8 +96,8 @@ class ResitelInline(admin.TabularInline):
class CisloInline(admin.TabularInline): class CisloInline(admin.TabularInline):
model = Cislo model = Cislo
fields = ['cislo', fields = ['cislo',
'datum_vydani', 'datum_deadline', 'datum_deadline_soustredeni', 'datum_vydani', 'datum_deadline', 'datum_deadline_soustredeni',
'verejne_db', 'poznamka'] 'verejne_db', 'poznamka']
readonly_fields = ['cislo'] readonly_fields = ['cislo']
extra = 0 extra = 0
formfield_overrides = { 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_display = ['osoba__jmeno', 'osoba__prijmeni', 'osoba__user', 'osoba__pohlavi_muz', 'skola', 'rok_maturity', 'pocet_reseni']
list_filter = ['osoba__pohlavi_muz', 'rok_maturity', 'zasilat'] list_filter = ['osoba__pohlavi_muz', 'rok_maturity', 'zasilat']
search_fields = ['osoba__jmeno', 'osoba__prijmeni', 'osoba__ulice', 'osoba__mesto', 'osoba__email'] search_fields = ['osoba__jmeno', 'osoba__prijmeni', 'osoba__ulice', 'osoba__mesto', 'osoba__email']
# inlines = [ReseniKResiteliInline] # FIXME: # inlines = [ReseniKResiteliInline] # FIXME:
view_on_site = False view_on_site = False
def osoba__jmeno(self, obj): def osoba__jmeno(self, obj):
@ -291,7 +291,7 @@ class CisloAdmin(VersionAdmin):
] ]
}), }),
('Data', {'fields': ['datum_vydani', 'datum_deadline', ('Data', {'fields': ['datum_vydani', 'datum_deadline',
'datum_deadline_soustredeni']}), 'datum_deadline_soustredeni']}),
] ]
list_display = [ list_display = [
'kod', 'kod',
@ -338,14 +338,14 @@ admin.site.register(Rocnik, RocnikAdmin)
### PrilohaReseni ### PrilohaReseni
# NOTE: Nemá pravděpodobně smysl používat # NOTE: Nemá pravděpodobně smysl používat
# class PrilohaReseniAdmin(reversion.VersionAdmin): # class PrilohaReseniAdmin(reversion.VersionAdmin):
# readonly_fields = ['timestamp', 'reseni'] # readonly_fields = ['timestamp', 'reseni']
# fieldsets = [ # fieldsets = [
# (None, {'fields': ['reseni', 'soubor', 'timestamp']}), # (None, {'fields': ['reseni', 'soubor', 'timestamp']}),
# (u'Poznámky', {'fields': ['poznamka']}), # (u'Poznámky', {'fields': ['poznamka']}),
# ] # ]
# list_display = ['reseni', 'soubor', 'timestamp'] # list_display = ['reseni', 'soubor', 'timestamp']
# list_filter = ['reseni', 'timestamp'] # list_filter = ['reseni', 'timestamp']
# search_fields = [] # search_fields = []
# #
# admin.site.register(PrilohaReseni, PrilohaReseniAdmin) # admin.site.register(PrilohaReseni, PrilohaReseniAdmin)
@ -567,18 +567,18 @@ class ProblemZadanyAdmin(ProblemAdmin):
### Prispevek (k tematkum) ### Prispevek (k tematkum)
#class PrispevekAdminForm(forms.ModelForm): #class PrispevekAdminForm(forms.ModelForm):
# text_org = forms.CharField(widget=CKEditorUploadingWidget(), required=False, # text_org = forms.CharField(widget=CKEditorUploadingWidget(), required=False,
# **field_labels(Prispevek, 'text_org')) # **field_labels(Prispevek, 'text_org'))
# text_resitel = forms.CharField(widget=CKEditorUploadingWidget(), required=False, # text_resitel = forms.CharField(widget=CKEditorUploadingWidget(), required=False,
# **field_labels(Prispevek, 'text_resitel')) # **field_labels(Prispevek, 'text_resitel'))
# #
# class Meta: # class Meta:
# model = Prispevek # model = Prispevek
# exclude = [] # exclude = []
# #
#class PrispevekAdmin(VersionAdmin): #class PrispevekAdmin(VersionAdmin):
# form = PrispevekAdminForm # form = PrispevekAdminForm
# list_display = ['nazev', 'problem', 'reseni', 'zverejnit'] # list_display = ['nazev', 'problem', 'reseni', 'zverejnit']
# #
#admin.site.register(Prispevek, PrispevekAdmin) #admin.site.register(Prispevek, PrispevekAdmin)
@ -619,7 +619,7 @@ class KonferaAdmin(VersionAdmin):
form = KonferaAdminForm form = KonferaAdminForm
list_filter = ['soustredeni'] list_filter = ['soustredeni']
list_display = ['nazev','soustredeni','organizator','typ_prezentace'] list_display = ['nazev','soustredeni','organizator','typ_prezentace']
# inlines = [Konfera_UcastniciInline] # inlines = [Konfera_UcastniciInline]
admin.site.register(Konfera,KonferaAdmin) admin.site.register(Konfera,KonferaAdmin)

4
seminar/models.py

@ -402,7 +402,7 @@ class Cislo(SeminarModelBase):
'zveřejněna výsledkovka', 'zveřejněna výsledkovka',
default=False, default=False,
help_text='Je-li false u veřejného čísla,\ 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, poznamka = models.TextField('neveřejná poznámka', blank=True,
help_text='Neveřejná poznámka k číslu (plain text)') 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__ # Django neumí jednoduše serializovat partial nebo třídu s __call__
# (https://docs.djangoproject.com/en/1.8/topics/migrations/), # (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. # podle adresáře řešíme takto.
## ##

460
seminar/views.py

@ -69,28 +69,28 @@ 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
@ -125,7 +125,7 @@ class TitulniStranaView(generic.ListView):
context['deadline_soustredeni'] = deadline_soustredeni context['deadline_soustredeni'] = deadline_soustredeni
try: try:
context['dead'] = datetime.combine(cas_deadline, context['dead'] = datetime.combine(cas_deadline,
datetime.max.time()) datetime.max.time())
context['ted'] = datetime.now() context['ted'] = datetime.now()
except: except:
context['dead'] = None context['dead'] = None
@ -274,61 +274,61 @@ def sloupec_s_poradim(vysledky):
#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):
@ -346,7 +346,7 @@ class RocnikView(generic.DetailView):
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):
@ -379,43 +379,43 @@ class ProblemView(generic.DetailView):
## Prispevek byl zrusen, mozna ale bude podobny nahled na neco jineho. ## Prispevek byl zrusen, mozna ale bude podobny nahled na neco jineho.
#class PrispevekView(generic.DetailView): #class PrispevekView(generic.DetailView):
# model = Prispevek # model = Prispevek
# template_name = 'seminar/archiv/prispevek.html' # template_name = 'seminar/archiv/prispevek.html'
# #
# # Vlastni ziskavani objektu z databaze podle prispevku # # Vlastni ziskavani objektu z databaze podle prispevku
# # pokud je prispevek neverejny zobrazi se jenom orgum # # pokud je prispevek neverejny zobrazi se jenom orgum
# 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()
# problem_arg = self.kwargs.get('pk') # problem_arg = self.kwargs.get('pk')
# prispevek_arg = self.kwargs.get('prispevek') # prispevek_arg = self.kwargs.get('prispevek')
# queryset = queryset.filter(pk=prispevek_arg) # queryset = queryset.filter(pk=prispevek_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})
# #
# if self.request.user.is_staff or obj.zverejnit: # if self.request.user.is_staff or obj.zverejnit:
# return obj # return obj
# else: # else:
# raise Http404() # raise Http404()
# #
# def get_context_data(self, **kwargs): # def get_context_data(self, **kwargs):
# context = super(PrispevekView, self).get_context_data(**kwargs) # context = super(PrispevekView, self).get_context_data(**kwargs)
# # snaho o ziskani titulu # # snaho o ziskani titulu
# titul = '' # titul = ''
# try: # try:
# resitel = context['prispevek'].reseni.resitel # resitel = context['prispevek'].reseni.resitel
# cislo = context['prispevek'].reseni.cislo_body # cislo = context['prispevek'].reseni.cislo_body
# body = VysledkyKCisluOdjakziva.objects.get(resitel=resitel, # body = VysledkyKCisluOdjakziva.objects.get(resitel=resitel,
# cislo=cislo).body # cislo=cislo).body
# titul = resitel.get_titul(body) # titul = resitel.get_titul(body)
# except: # except:
# pass # pass
# context['titul'] = titul # context['titul'] = titul
# return context # return context
@ -423,83 +423,83 @@ 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
@ -509,20 +509,20 @@ class ArchivTemataView(generic.ListView):
### 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:
@ -534,8 +534,8 @@ class CisloObalkyStruct:
def aktualniResitele(rocnik): def aktualniResitele(rocnik):
letos = Rocnik.objects.get(rocnik = rocnik) letos = Rocnik.objects.get(rocnik = rocnik)
return Resitel.objects.filter(rok_maturity__gt = letos.prvni_rok) 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 # # 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)) # return Resitel.objects.filter(Q(rok_maturity__gt = letos.prvni_rok)|Q(rok_maturity = None))
# Vraci QuerySet aktivnich resitelu = # Vraci QuerySet aktivnich resitelu =
# jeste neodmaturovali && # jeste neodmaturovali &&
@ -604,27 +604,27 @@ def obalkovaniView(request, rocnik, cislo):
# TODO udelat neco jako get_objects_or_404 # TODO udelat neco jako get_objects_or_404
# FIXME: prepsat, aby nepouzivalo VysledkyK... # FIXME: prepsat, aby nepouzivalo VysledkyK...
#def TitulyView(request, rocnik, cislo): #def TitulyView(request, rocnik, cislo):
# rocnik_obj = Rocnik.objects.get(rocnik = rocnik) # rocnik_obj = Rocnik.objects.get(rocnik = rocnik)
# resitele = Resitel.objects.filter(rok_maturity__gte = rocnik_obj.prvni_rok) # resitele = Resitel.objects.filter(rok_maturity__gte = rocnik_obj.prvni_rok)
# cislo_obj = Cislo.objects.get(rocnik = rocnik_obj, cislo = cislo) # cislo_obj = Cislo.objects.get(rocnik = rocnik_obj, cislo = cislo)
# #
# asciijmena = [] # asciijmena = []
# broken = False # broken = False
# #
# for resitel in resitele: # for resitel in resitele:
# try: # try:
# vys = VysledkyKCisluOdjakziva.objects.get(resitel = resitel, cislo = cislo_obj) # vys = VysledkyKCisluOdjakziva.objects.get(resitel = resitel, cislo = cislo_obj)
# body = vys.body # body = vys.body
# except ObjectDoesNotExist: # except ObjectDoesNotExist:
# body = 0 # body = 0
# resitel.titul = resitel.get_titul(body) # resitel.titul = resitel.get_titul(body)
# resitel.ascii = unicodedata.normalize('NFKD',resitel.jmeno+resitel.prijmeni).encode("ascii","ignore").replace(" ","") # resitel.ascii = unicodedata.normalize('NFKD',resitel.jmeno+resitel.prijmeni).encode("ascii","ignore").replace(" ","")
# if resitel.ascii not in asciijmena: # if resitel.ascii not in asciijmena:
# asciijmena.append(resitel.ascii) # asciijmena.append(resitel.ascii)
# else: # else:
# broken = True # 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
@ -712,21 +712,21 @@ class ClankyResitelView(generic.ListView):
# FIXME: pokud chceme orgoclanky, tak nejak zavest do modelu a podle toho odkomentovat a upravit # FIXME: pokud chceme orgoclanky, tak nejak zavest do modelu a podle toho odkomentovat a upravit
#class ClankyOrganizatorView(generic.ListView)<F12>: #class ClankyOrganizatorView(generic.ListView)<F12>:
# model = Problem # model = Problem
# template_name = 'seminar/clanky/organizatorske_clanky.html' # 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') # queryset = Problem.objects.filter(stav=Problem.STAV_ZADANY).select_related('cislo_zadani__rocnik').order_by('-cislo_zadani__rocnik__rocnik', 'kod')
### Status ### Status
def StavDatabazeView(request): def StavDatabazeView(request):
# nastaveni = Nastaveni.objects.get() # nastaveni = Nastaveni.objects.get()
problemy = utils.seznam_problemu() problemy = utils.seznam_problemu()
muzi = Resitel.objects.filter(pohlavi_muz=True) muzi = Resitel.objects.filter(pohlavi_muz=True)
zeny = Resitel.objects.filter(pohlavi_muz=False) zeny = Resitel.objects.filter(pohlavi_muz=False)
return render(request, 'seminar/stav_databaze.html', return render(request, 'seminar/stav_databaze.html',
{ {
# 'nastaveni': nastaveni, # 'nastaveni': nastaveni,
'problemy': problemy, 'problemy': problemy,
'resitele': Resitel.objects.all(), 'resitele': Resitel.objects.all(),

Loading…
Cancel
Save