Browse Source

models.py: OneToOneFieldy do komentářů, zalámání textu

export_seznamu_prednasek
Anet 6 years ago
parent
commit
4f2e56ce06
  1. 40
      seminar/models.py

40
seminar/models.py

@ -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)

Loading…
Cancel
Save