@ -347,7 +347,8 @@ class OdevzdavatkoTabulkaFiltrForm(forms.Form):
# TODO: Typy problémů (problémy, úlohy, ostatní, všechny)? Jen některá řešení (obodovaná/neobodovaná, víc řešitelů, ...)?
# TODO: Typy problémů (problémy, úlohy, ostatní, všechny)? Jen některá řešení (obodovaná/neobodovaná, víc řešitelů, ...)?
def gen_terminy ( ) :
@classmethod
def gen_terminy ( cls ) :
import datetime
import datetime
from time import strftime
from time import strftime
@ -390,11 +391,32 @@ class OdevzdavatkoTabulkaFiltrForm(forms.Form):
return result
return result
@classmethod
def gen_initial ( cls ) :
terminy = cls . gen_terminy ( )
initial = {
' resitele ' : cls . RESITELE_RELEVANTNI ,
' problemy ' : cls . PROBLEMY_MOJE ,
' reseni_od ' : terminy [ - 2 ] [ 0 ] ,
' reseni_do ' : terminy [ - 1 ] [ 0 ] ,
}
return initial
def __init__ ( self , * args , * * kwargs ) :
if ' initial ' not in kwargs :
super ( ) . __init__ ( initial = self . gen_initial ( ) , * 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 ( )
# NOTE: Initial definuji pro jednotlivé fieldy, aby to bylo tady a nebylo potřeba to řešit ve views...
# NOTE: Initial definuji pro jednotlivé fieldy, aby to bylo tady a nebylo potřeba to řešit ve views...
resitele = forms . ChoiceField ( choices = RESITELE_CHOICES , initial = RESITELE_RELEVANTNI )
resitele = forms . ChoiceField ( choices = RESITELE_CHOICES )
problemy = forms . ChoiceField ( choices = PROBLEMY_CHOICES , initial = PROBLEMY_MOJE )
problemy = forms . ChoiceField ( choices = PROBLEMY_CHOICES )
# choices jako parametr Select widgetu neumí brát callable, jen iterable, takže si pro jednoduchost můžu rovnou uložit výsledek sem...
# reseni_od = forms.DateField(input_formats=[DATE_FORMAT], widget=forms.Select(choices=self.terminy))
terminy = gen_terminy ( )
# reseni_do = forms.DateField(input_formats=[DATE_FORMAT], widget=forms.Select(choices=self.terminy) )
reseni_od = forms . DateField ( input_formats = [ DATE_FORMAT ] , widget = forms . Select ( choices = terminy ) , initial = terminy [ - 2 ] )
reseni_od = forms . DateField ( input_formats = [ DATE_FORMAT ] )
reseni_do = forms . DateField ( input_formats = [ DATE_FORMAT ] , widget = forms . Select ( choices = terminy ) , initial = terminy [ - 1 ] )
reseni_do = forms . DateField ( input_formats = [ DATE_FORMAT ] )