Browse Source

Oprava odevzdávací tabulky

Chyběly správně inicializace ročníku
middleware_test
Pavel "LEdoian" Turinsky 3 years ago
parent
commit
e46d5a20c1
  1. 4
      seminar/forms.py
  2. 18
      seminar/views/odevzdavatko.py

4
seminar/forms.py

@ -415,9 +415,9 @@ class OdevzdavatkoTabulkaFiltrForm(forms.Form):
# choices jako parametr Select widgetu neumí brát callable, jen iterable, takže si pro jednoduchost můžu rovnou uložit výsledek sem...
# A "sem" znamená do libovolné metody, protože jinak se jedná o kód, který django spustí při inicializaci a protože potřebujeme databázi, tak by spadnul při vyrábění testdat...
self.terminy = self.gen_terminy(rocnik)
self.fields['reseni_od'].widget = forms.Select(choices=self.gen_terminy())
self.fields['reseni_od'].widget = forms.Select(choices=self.gen_terminy(rocnik))
self.fields['reseni_od'].initial = self.terminy[-2]
self.fields['reseni_do'].widget = forms.Select(choices=self.gen_terminy())
self.fields['reseni_do'].widget = forms.Select(choices=self.gen_terminy(rocnik))
self.fields['reseni_do'].initial = self.terminy[-1]
# NOTE: Initial definuji pro jednotlivé fieldy, aby to bylo tady a nebylo potřeba to řešit ve views...

18
seminar/views/odevzdavatko.py

@ -53,11 +53,11 @@ class TabulkaOdevzdanychReseniView(ListView):
self.problemy = m.Problem.objects.all()
self.reseni = m.Reseni.objects.all()
aktualni_rocnik = m.Nastaveni.get_solo().aktualni_rocnik # .get_solo() vrátí tu jedinou instanci
self.aktualni_rocnik = m.Nastaveni.get_solo().aktualni_rocnik # .get_solo() vrátí tu jedinou instanci
if 'rocnik' in self.kwargs:
aktualni_rocnik = m.Rocnik.objects.get(rocnik=self.kwargs['rocnik'])
self.aktualni_rocnik = m.Rocnik.objects.get(rocnik=self.kwargs['rocnik'])
form = FiltrForm(self.request.GET, rocnik=aktualni_rocnik)
form = FiltrForm(self.request.GET, rocnik=self.aktualni_rocnik)
if form.is_valid():
fcd = form.cleaned_data
resitele = fcd["resitele"]
@ -66,7 +66,7 @@ class TabulkaOdevzdanychReseniView(ListView):
reseni_do = fcd["reseni_do"]
jen_neobodovane = fcd["neobodovane"]
else:
initial = FiltrForm.gen_initial(aktualni_rocnik)
initial = FiltrForm.gen_initial(self.aktualni_rocnik)
resitele = initial['resitele']
problemy = initial['problemy']
reseni_od = initial['reseni_od'][0]
@ -76,22 +76,22 @@ class TabulkaOdevzdanychReseniView(ListView):
# Chceme jen letošní problémy
# FIXME: Neexistuje metoda, jak dostat starší problémy…
self.problemy = self.problemy.filter(Q(Tema___rocnik=aktualni_rocnik) | Q(Uloha___cislo_zadani__rocnik = aktualni_rocnik) | Q(Clanek___cislo__rocnik = aktualni_rocnik) | Q(Konfera___soustredeni__rocnik = aktualni_rocnik))
self.problemy = self.problemy.filter(Q(Tema___rocnik=self.aktualni_rocnik) | Q(Uloha___cislo_zadani__rocnik = self.aktualni_rocnik) | Q(Clanek___cislo__rocnik = self.aktualni_rocnik) | Q(Konfera___soustredeni__rocnik = self.aktualni_rocnik))
self.chteni_resitele = resitele # Zapamatování pro get_context_data
if resitele == FiltrForm.RESITELE_RELEVANTNI:
# Nejde použít utils.resi_v_rocniku, protože noví řešitelé mohou mít neobodované řešení a takoví technicky zatím neřeší.
# Proto používám neodmaturovavší řešitele, TODO: Chceme to takhle nebo jinak?
self.resitele = self.resitele.filter(rok_maturity__gt=aktualni_rocnik.prvni_rok) # Prvotní sada, pokud nebude mít body, odstraní se v get_context_data
self.resitele = self.resitele.filter(rok_maturity__gt=self.aktualni_rocnik.prvni_rok) # Prvotní sada, pokud nebude mít body, odstraní se v get_context_data
elif resitele == FiltrForm.RESITELE_NEODMATUROVAVSI:
self.resitele = self.resitele.filter(rok_maturity__gt=aktualni_rocnik.prvni_rok)
self.resitele = self.resitele.filter(rok_maturity__gt=self.aktualni_rocnik.prvni_rok)
if problemy == FiltrForm.PROBLEMY_MOJE:
org = m.Organizator.objects.get(osoba__user=self.request.user)
self.problemy = self.problemy.filter(Q(autor=org)|Q(garant=org)|Q(opravovatele=org), stav=m.Problem.STAV_ZADANY)
elif problemy == FiltrForm.PROBLEMY_LETOSNI:
self.problemy = self.problemy.filter(stav=m.Problem.STAV_ZADANY)
#self.problemy = list(filter(lambda problem: problem.rocnik() == aktualni_rocnik, self.problemy)) # DB HOG? # FIXME: některé problémy nemají ročník....
#self.problemy = list(filter(lambda problem: problem.rocnik() == self.aktualni_rocnik, self.problemy)) # DB HOG? # FIXME: některé problémy nemají ročník....
# NOTE: Protože řešení odkazuje přímo na Problém a QuerySet na Hodnocení je nepolymorfní, musíme porovnávat taky s nepolymorfními Problémy.
self.problemy = self.problemy.non_polymorphic()
@ -148,7 +148,7 @@ class TabulkaOdevzdanychReseniView(ListView):
hodnoty.append(resiteluv_radek)
resitele_do_tabulky.append(resitel)
ctx['radky'] = list(zip(resitele_do_tabulky, hodnoty))
ctx['filtr'] = FiltrForm(initial=self.request.GET)
ctx['filtr'] = FiltrForm(initial=self.request.GET, rocnik=self.aktualni_rocnik)
# Pro použití hacku na automatické {{form.media}} v template:
ctx['form'] = ctx['filtr']

Loading…
Cancel
Save