@ -561,7 +561,9 @@ class Soustredeni(SeminarModelBase):
class Problem ( SeminarModelBase ) :
class Problem ( SeminarModelBase ) :
class Meta :
class Meta :
abstract = True
# Není abstraktní, protože se na něj jinak nedají dělat ForeignKeys.
# TODO: Udělat to polymorfní (pomocí django-polymorphic), abychom dostali po těch vazbách přímo tu úlohu/témátko vč. fieldů, které nejsou součástí modelu Problem?
#abstract = True
verbose_name = ' Problém '
verbose_name = ' Problém '
verbose_name_plural = ' Problémy '
verbose_name_plural = ' Problémy '
ordering = [ ' nazev ' ]
ordering = [ ' nazev ' ]
@ -574,7 +576,7 @@ class Problem(SeminarModelBase):
# Problém má podproblémy
# Problém má podproblémy
nadproblem = models . ForeignKey ( ' self ' , verbose_name = ' nadřazený problém ' ,
nadproblem = models . ForeignKey ( ' self ' , verbose_name = ' nadřazený problém ' ,
related_name = ' nadproblem ' , null = True , blank = True )
related_name = ' nadproblem_ %(class)s ' , null = True , blank = True )
STAV_NAVRH = ' navrh '
STAV_NAVRH = ' navrh '
STAV_ZADANY = ' zadany '
STAV_ZADANY = ' zadany '
@ -595,13 +597,13 @@ class Problem(SeminarModelBase):
autor = models . ForeignKey ( Organizator , verbose_name = ' autor problému ' ,
autor = models . ForeignKey ( Organizator , verbose_name = ' autor problému ' ,
related_name = ' autor_problemu ' , null = True , blank = True )
related_name = ' autor_problemu_ %(class)s ' , null = True , blank = True )
garant = models . ForeignKey ( Organizator , verbose_name = ' garant zadaného problému ' ,
garant = models . ForeignKey ( Organizator , verbose_name = ' garant zadaného problému ' ,
related_name = ' garant_problemu ' , null = True , blank = True )
related_name = ' garant_problemu_ %(class)s ' , null = True , blank = True )
opravovatele = models . ManyToManyField ( Organizator , verbose_name = ' opravovatelé ' ,
opravovatele = models . ManyToManyField ( Organizator , verbose_name = ' opravovatelé ' ,
null = True , blank = True , related_name = ' opravovatele_uloh ' )
null = True , blank = True , related_name = ' opravovatele_ %(class)s ' )
kod = models . CharField ( ' lokální kód ' , max_length = 32 , blank = True , default = ' ' ,
kod = models . CharField ( ' lokální kód ' , max_length = 32 , blank = True , default = ' ' ,
help_text = ' Číslo/kód úlohy v čísle nebo kód tématu/článku/seriálu v ročníku ' )
help_text = ' Číslo/kód úlohy v čísle nebo kód tématu/článku/seriálu v ročníku ' )
@ -660,7 +662,7 @@ class Tema(Problem):
]
]
typ = models . CharField ( ' Typ tématu ' , max_length = 16 , choices = TEMA_CHOICES , blank = False , default = TEMA_TEMA )
typ = models . CharField ( ' Typ tématu ' , max_length = 16 , choices = TEMA_CHOICES , blank = False , default = TEMA_TEMA )
rocnik = models . ForeignKey ( Rocnik , verbose_name = ' ročník ' , related_name = ' rocnik ' , blank = True , null = True )
rocnik = models . ForeignKey ( Rocnik , verbose_name = ' ročník ' , blank = True , null = True )
def kod_v_rocniku ( self ) :
def kod_v_rocniku ( self ) :
if self . stav == ' zadany ' :
if self . stav == ' zadany ' :
@ -675,7 +677,7 @@ class Clanek(Problem):
verbose_name = ' Článek '
verbose_name = ' Článek '
verbose_name_plural = ' Články '
verbose_name_plural = ' Články '
cislo = models . ForeignKey ( Cislo , verbose_name = ' číslo ' , related_name = ' cislo ' , blank = True , null = True )
cislo = models . ForeignKey ( Cislo , verbose_name = ' číslo ' , blank = True , null = True )
def kod_v_rocniku ( self ) :
def kod_v_rocniku ( self ) :
if self . stav == ' zadany ' :
if self . stav == ' zadany ' :
# Nemělo by být potřeba
# Nemělo by být potřeba
@ -706,9 +708,9 @@ class Uloha(Problem):
verbose_name_plural = ' Úlohy '
verbose_name_plural = ' Úlohy '
zadani = models . ForeignKey ( Text , verbose_name = ' veřejné zadání ' , related_name = ' zadani ' , blank = True , null = True )
zadani = models . ForeignKey ( Text , verbose_name = ' veřejné zadání ' , blank = True , null = True )
vzorak = models . ForeignKey ( Text , verbose_name = ' vzorové řešení ' , related_name = ' vzorak ' , blank = True , null = True )
vzorak = models . ForeignKey ( Text , verbose_name = ' vzorové řešení ' , blank = True , null = True )
cislo_zadani = models . ForeignKey ( Cislo , verbose_name = ' číslo zadání ' , blank = True , null = True , related_name = ' zadane_ulohy ' )
cislo_zadani = models . ForeignKey ( Cislo , verbose_name = ' číslo zadání ' , blank = True , null = True , related_name = ' zadane_ulohy ' )
@ -738,7 +740,8 @@ class Reseni(SeminarModelBase):
db_table = ' seminar_reseni '
db_table = ' seminar_reseni '
verbose_name = ' Řešení '
verbose_name = ' Řešení '
verbose_name_plural = ' Řešení '
verbose_name_plural = ' Řešení '
ordering = [ ' -problem_id ' , ' resitel ' ]
#ordering = ['-problem', 'resitele'] # FIXME: Takhle to chceme, ale nefunguje to.
ordering = [ ' -cas_doruceni ' ]
# Interní ID
# Interní ID
id = models . AutoField ( primary_key = True )
id = models . AutoField ( primary_key = True )
@ -765,10 +768,10 @@ class Reseni(SeminarModelBase):
default = FORMA_EMAIL )
default = FORMA_EMAIL )
text_cely = models . ForeignKey ( Text , verbose_name = ' Plná verze textu řešení ' ,
text_cely = models . ForeignKey ( Text , verbose_name = ' Plná verze textu řešení ' ,
blank = True , null = True )
blank = True , null = True , related_name = " reseni_cely_set " )
text_zkraceny = models . ManyToManyField ( Text , verbose_name = ' zkrácené verze řešení ' ,
text_zkraceny = models . ManyToManyField ( Text , verbose_name = ' zkrácené verze řešení ' ,
help_text = ' Seznam úryvků z řešení ' )
help_text = ' Seznam úryvků z řešení ' , related_name = " reseni_zkraceny_set " )
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 řešení (plain text) ' )
help_text = ' Neveřejná poznámka k řešení (plain text) ' )