@ -115,6 +115,11 @@ class Osoba(SeminarModelBase):
] ,
] ,
options = { ' quality ' : 95 } )
options = { ' quality ' : 95 } )
# má OneToOneField nejvýše s:
# Resitel
# Prijemce
# Organizator
def plne_jmeno ( self ) :
def plne_jmeno ( self ) :
return ' {} {} ' . format ( self . jmeno , self . prijmeni )
return ' {} {} ' . format ( self . jmeno , self . prijmeni )
@ -314,7 +319,11 @@ class Rocnik(SeminarModelBase):
rocnik = models . IntegerField ( ' číslo ročníku ' , db_index = True , unique = True )
rocnik = models . IntegerField ( ' číslo ročníku ' , db_index = True , unique = True )
exportovat = models . BooleanField ( ' export do AESOPa ' , db_column = ' exportovat ' , default = False ,
exportovat = models . BooleanField ( ' export do AESOPa ' , db_column = ' exportovat ' , default = False ,
help_text = ' Exportuje se jen podle tohoto flagu (ne veřejnosti), a to jen čísla s veřejnou výsledkovkou ' )
help_text = ' Exportuje se jen podle tohoto flagu (ne veřejnosti), '
' a to jen čísla s veřejnou výsledkovkou ' )
# má OneToOneField s:
# RocnikNode
def __str__ ( self ) :
def __str__ ( self ) :
return ' {} ( {} / {} ) ' . format ( self . rocnik , self . prvni_rok , self . prvni_rok + 1 )
return ' {} ( {} / {} ) ' . format ( self . rocnik , self . prvni_rok , self . prvni_rok + 1 )
@ -409,6 +418,8 @@ class Cislo(SeminarModelBase):
pdf = models . FileField ( ' pdf ' , upload_to = cislo_pdf_filename , null = True , blank = True ,
pdf = models . FileField ( ' pdf ' , upload_to = cislo_pdf_filename , null = True , blank = True ,
help_text = ' Pdf čísla, které si mohou řešitelé stáhnout ' )
help_text = ' Pdf čísla, které si mohou řešitelé stáhnout ' )
# má OneToOneField s:
# CisloNode
def kod ( self ) :
def kod ( self ) :
return ' %s . %s ' % ( self . rocnik . rocnik , self . cislo )
return ' %s . %s ' % ( self . rocnik . rocnik , self . cislo )
@ -560,7 +571,10 @@ class Problem(SeminarModelBase):
class Meta :
class Meta :
# Není abstraktní, protože se na něj jinak nedají dělat ForeignKeys.
# 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?
# 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
#abstract = True
db_table = ' seminar_problemy '
db_table = ' seminar_problemy '
verbose_name = ' Problém '
verbose_name = ' Problém '
@ -678,6 +692,10 @@ class Clanek(Problem):
verbose_name_plural = ' Články '
verbose_name_plural = ' Články '
cislo = models . ForeignKey ( Cislo , verbose_name = ' číslo ' , blank = True , null = True )
cislo = models . ForeignKey ( Cislo , verbose_name = ' číslo ' , blank = True , null = True )
# má OneToOneField s:
# ClanekNode
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
@ -698,8 +716,12 @@ class Text(SeminarModelBase):
do_cisla = models . TextField ( ' text do čísla ' , blank = True ,
do_cisla = models . TextField ( ' text do čísla ' , blank = True ,
help_text = ' Text ke zveřejnění v čísle ' )
help_text = ' Text ke zveřejnění v čísle ' )
# má OneToOneField s:
# Reseni (je u něj jako reseni_cele)
# obrázky mají návaznost opačným směrem (vazba z druhé strany)
# obrázky mají návaznost opačným směrem (vazba z druhé strany)
class Uloha ( Problem ) :
class Uloha ( Problem ) :
class Meta :
class Meta :
@ -720,6 +742,10 @@ class Uloha(Problem):
max_body = models . DecimalField ( max_digits = 8 , decimal_places = 1 , verbose_name = ' maximum bodů ' ,
max_body = models . DecimalField ( max_digits = 8 , decimal_places = 1 , verbose_name = ' maximum bodů ' ,
blank = True , null = True )
blank = True , null = True )
# má OneToOneField s:
# UlohaZadaniNode
# UlohaVzorakNode
def kod_v_rocniku ( self ) :
def kod_v_rocniku ( self ) :
if self . stav == ' zadany ' :
if self . stav == ' zadany ' :
name = " {} .u {} " . format ( self . cislo_zadani . cislo , self . kod )
name = " {} .u {} " . format ( self . cislo_zadani . cislo , self . kod )
@ -729,7 +755,6 @@ class Uloha(Problem):
return ' <Není zadaný> '
return ' <Není zadaný> '
@reversion . register ( ignore_duplicates = True )
@reversion . register ( ignore_duplicates = True )
class Reseni ( SeminarModelBase ) :
class Reseni ( SeminarModelBase ) :
@ -776,6 +801,9 @@ class Reseni(SeminarModelBase):
zverejneno = models . BooleanField ( ' řešení zveřejněno ' , default = False ,
zverejneno = models . BooleanField ( ' řešení zveřejněno ' , default = False ,
help_text = ' Udává, zda je řešení zveřejněno ' )
help_text = ' Udává, zda je řešení zveřejněno ' )
# má OneToOneField s:
# Konfera
def __str__ ( self ) :
def __str__ ( self ) :
return " {} : {} " . format ( self . resitel . osoba . plne_jmeno ( ) , self . problem . nazev )
return " {} : {} " . format ( self . resitel . osoba . plne_jmeno ( ) , self . problem . nazev )
# NOTE: Potenciální DB HOG (bez select_related)
# NOTE: Potenciální DB HOG (bez select_related)
@ -897,6 +925,9 @@ class Pohadka(SeminarModelBase):
editable = False
editable = False
)
)
# má OneToOneField s:
# PohadkaNode
def __str__ ( self ) :
def __str__ ( self ) :
uryvek = self . text if len ( self . text ) < 50 else self . text [ : ( 50 - 3 ) ] + " ... "
uryvek = self . text if len ( self . text ) < 50 else self . text [ : ( 50 - 3 ) ] + " ... "
return uryvek
return uryvek
@ -1001,6 +1032,9 @@ class Konfera(models.Model):
help_text = ' Další materiály ke konfeře zabalené do jednoho souboru ' ,
help_text = ' Další materiály ke konfeře zabalené do jednoho souboru ' ,
upload_to = generate_filename_konfera , blank = True )
upload_to = generate_filename_konfera , blank = True )
# má OneToOneField s:
# KonferaNode
def __str__ ( self ) :
def __str__ ( self ) :
return " {} : ( {} ) " . format ( self . nazev , self . soustredeni )
return " {} : ( {} ) " . format ( self . nazev , self . soustredeni )