From 4f2e56ce06c07feb1cd1a6613d00759f4ea212c2 Mon Sep 17 00:00:00 2001 From: Anet Date: Mon, 10 Jun 2019 22:51:37 +0200 Subject: [PATCH] =?UTF-8?q?models.py:=20OneToOneFieldy=20do=20koment=C3=A1?= =?UTF-8?q?=C5=99=C5=AF,=20zal=C3=A1m=C3=A1n=C3=AD=20textu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- seminar/models.py | 40 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/seminar/models.py b/seminar/models.py index d94d1e3d..760c5c57 100644 --- a/seminar/models.py +++ b/seminar/models.py @@ -115,6 +115,11 @@ class Osoba(SeminarModelBase): ], options={'quality': 95}) + # má OneToOneField nejvýše s: + # Resitel + # Prijemce + # Organizator + def plne_jmeno(self): 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) 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): 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, help_text='Pdf čísla, které si mohou řešitelé stáhnout') + # má OneToOneField s: + # CisloNode def kod(self): return '%s.%s' % (self.rocnik.rocnik, self.cislo) @@ -560,7 +571,10 @@ class Problem(SeminarModelBase): class Meta: # 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 db_table = 'seminar_problemy' verbose_name = 'Problém' @@ -678,6 +692,10 @@ class Clanek(Problem): verbose_name_plural = 'Články' cislo = models.ForeignKey(Cislo, verbose_name='číslo', blank=True, null=True) + + # má OneToOneField s: + # ClanekNode + def kod_v_rocniku(self): if self.stav == 'zadany': # Nemělo by být potřeba @@ -698,8 +716,12 @@ class Text(SeminarModelBase): do_cisla = models.TextField('text do čísla', blank=True, 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) + class Uloha(Problem): class Meta: @@ -720,6 +742,10 @@ class Uloha(Problem): max_body = models.DecimalField(max_digits=8, decimal_places=1, verbose_name='maximum bodů', blank=True, null=True) + # má OneToOneField s: + # UlohaZadaniNode + # UlohaVzorakNode + def kod_v_rocniku(self): if self.stav == 'zadany': name="{}.u{}".format(self.cislo_zadani.cislo,self.kod) @@ -729,7 +755,6 @@ class Uloha(Problem): return '' - @reversion.register(ignore_duplicates=True) class Reseni(SeminarModelBase): @@ -776,6 +801,9 @@ class Reseni(SeminarModelBase): zverejneno = models.BooleanField('řešení zveřejněno', default=False, help_text='Udává, zda je řešení zveřejněno') + # má OneToOneField s: + # Konfera + def __str__(self): return "{}: {}".format(self.resitel.osoba.plne_jmeno(), self.problem.nazev) # NOTE: Potenciální DB HOG (bez select_related) @@ -897,6 +925,9 @@ class Pohadka(SeminarModelBase): editable=False ) + # má OneToOneField s: + # PohadkaNode + def __str__(self): uryvek = self.text if len(self.text) < 50 else self.text[:(50-3)]+"..." return uryvek @@ -1001,6 +1032,9 @@ class Konfera(models.Model): help_text = 'Další materiály ke konfeře zabalené do jednoho souboru', upload_to = generate_filename_konfera, blank=True) + # má OneToOneField s: + # KonferaNode + def __str__(self): return "{}: ({})".format(self.nazev, self.soustredeni)