@ -347,7 +347,7 @@ class OdevzdavatkoTabulkaFiltrForm(forms.Form):
@classmethod
def gen_terminy ( cls ) :
def gen_terminy ( cls , rocnik = None ) :
import datetime
from time import strftime
@ -362,6 +362,11 @@ class OdevzdavatkoTabulkaFiltrForm(forms.Form):
logger . error ( " Rozbitá databáze (před počátečními migracemi?) " )
return [ ( ' broken ' , ' Je to rozbitý ' ) , ( ' fubar ' , ' Nefunguje to ' ) ]
# FIXME: Tohle je hnusný monkey patch, mělo by to být nějak zahrnuto výš.
if rocnik is not None :
aktualni_rocnik = rocnik
aktualni_cislo = m . Cislo . objects . filter ( rocnik = rocnik ) . order_by ( ' poradi ' ) . last ( )
result = [ ]
for cislo in m . Cislo . objects . filter (
@ -391,8 +396,8 @@ class OdevzdavatkoTabulkaFiltrForm(forms.Form):
return result
@classmethod
def gen_initial ( cls ) :
terminy = cls . gen_terminy ( )
def gen_initial ( cls , rocnik = None ) :
terminy = cls . gen_terminy ( rocnik )
initial = {
' resitele ' : cls . RESITELE_RELEVANTNI ,
' problemy ' : cls . PROBLEMY_MOJE ,
@ -402,14 +407,14 @@ class OdevzdavatkoTabulkaFiltrForm(forms.Form):
}
return initial
def __init__ ( self , * args , * * kwargs ) :
def __init__ ( self , * args , rocnik = None , * * kwargs ) :
if ' initial ' not in kwargs :
super ( ) . __init__ ( initial = self . gen_initial ( ) , * args , * * kwargs )
super ( ) . __init__ ( initial = self . gen_initial ( rocnik ) , * args , * * kwargs )
else :
super ( ) . __init__ ( * args , * * kwargs )
# 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 ( )
self . terminy = self . gen_terminy ( rocnik )
self . fields [ ' reseni_od ' ] . widget = forms . Select ( choices = self . gen_terminy ( ) )
self . fields [ ' reseni_od ' ] . initial = self . terminy [ - 2 ]
self . fields [ ' reseni_do ' ] . widget = forms . Select ( choices = self . gen_terminy ( ) )