From 0ee4ac877e5bcaddeb2ff735cb791f924cd3fdd4 Mon Sep 17 00:00:00 2001 From: Pavel 'LEdoian' Turinsky Date: Wed, 1 Apr 2020 21:59:34 +0200 Subject: [PATCH] =?UTF-8?q?Models:=20Dneska=20jsme=20zase=20p=C5=99ekopali?= =?UTF-8?q?=20model.=20U=C5=BE=20zase=20n=C3=A1m=20d=C3=A1v=C3=A1=20smysl?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- seminar/models.py | 92 +++++++++++------------------------------------ 1 file changed, 21 insertions(+), 71 deletions(-) diff --git a/seminar/models.py b/seminar/models.py index 2a1c60d6..b7a09734 100644 --- a/seminar/models.py +++ b/seminar/models.py @@ -751,14 +751,6 @@ class Clanek(Problem): verbose_name = 'Článek' verbose_name_plural = 'Články' - cislo = models.ForeignKey(Cislo, verbose_name='číslo', blank=True, null=True, - on_delete=models.PROTECT) - - resitelsky = models.BooleanField('Jde o řešitelský článek?', default=True) - - # má OneToOneField s: - # ClanekNode - def kod_v_rocniku(self): if self.stav == 'zadany': # Nemělo by být potřeba @@ -767,15 +759,6 @@ class Clanek(Problem): return "c{}".format(self.kod) return '' - def save(self, *args, **kwargs): - super().save(*args, **kwargs) - # *Node.save() aktualizuje název *Nodu. - try: - self.claneknode.save() - except ObjectDoesNotExist: - # Neexistující *Node nemá smysl aktualizovat. - pass - class Text(SeminarModelBase): class Meta: db_table = 'seminar_texty' @@ -885,13 +868,10 @@ class Reseni(SeminarModelBase): forma = models.CharField('forma řešení', max_length=16, choices=FORMA_CHOICES, blank=False, default=FORMA_EMAIL) - text_cely = models.OneToOneField(Text, verbose_name='Plná verze textu řešení', + text_cely = models.OneToOneField(ReseniNode, verbose_name='Plná verze textu řešení', blank=True, null=True, related_name="reseni_cely_set", - on_delete=models.SET_NULL) + on_delete=models.PROTECT) - text_zkraceny = models.ManyToManyField(Text, verbose_name='zkrácené verze řešení', - help_text='Seznam úryvků z řešení',related_name="reseni_zkraceny_set") - poznamka = models.TextField('neveřejná poznámka', blank=True, help_text='Neveřejná poznámka k řešení (plain text)') @@ -1100,7 +1080,7 @@ class Soustredeni_Organizatori(SeminarModelBase): @reversion.register(ignore_duplicates=True) -class Konfera(models.Model): +class Konfera(Problem): class Meta: db_table = 'seminar_konfera' verbose_name = 'Konfera' @@ -1108,17 +1088,12 @@ class Konfera(models.Model): # Interní ID id = models.AutoField(primary_key = True) - nazev = models.CharField('název konfery', max_length=100, help_text = 'Název konfery') - anotace = models.TextField('anotace', blank=True, help_text='Popis, o čem bude konfera.') abstrakt = models.TextField('abstrakt', blank=True, help_text='Abstrakt konfery tak, jak byl uveden ve sborníku') - organizator = models.ForeignKey(Organizator, verbose_name='organizátor', related_name='konfery', - on_delete = models.SET_NULL, null=True) - # FIXME: Umíme omezit jen na účastníky daného soustřeďka? ucastnici = models.ManyToManyField(Resitel, verbose_name='účastníci konfery', help_text='Seznam účastníků konfery', through='Konfery_Ucastnici') @@ -1126,13 +1101,6 @@ class Konfera(models.Model): soustredeni = models.ForeignKey(Soustredeni, verbose_name='soustředění', related_name='konfery', on_delete = models.SET_NULL, null=True) - poznamka = models.TextField('neveřejná poznámka', blank=True, - help_text='Neveřejná poznámka ke konfeře(plain text)') - # Jedno reseni se vztahuje nejvyse k jedne konfere - reseni = models.OneToOneField(Reseni, verbose_name='článek ke konfeře', related_name='konfery', - help_text='Účastnický přípěvek o konfeře', on_delete = models.SET_NULL, - null=True, blank=True) - TYP_VELETRH = 'veletrh' TYP_PREZENTACE = 'prezentace' TYP_CHOICES = [ @@ -1149,21 +1117,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) - def save(self, *args, **kwargs): - super().save(*args, **kwargs) - # *Node.save() aktualizuje název *Nodu. - try: - self.konferanode.save() - except ObjectDoesNotExist: - # Neexistující *Node nemá smysl aktualizovat. - pass - # Vazebna tabulka. Mozna se generuje automaticky. @reversion.register(ignore_duplicates=True) @@ -1376,36 +1332,30 @@ class TemaVCisleNode(TreeNode): def getOdkazStr(self): return str(self.tema) -class KonferaNode(TreeNode): - class Meta: - db_table = 'seminar_nodes_konfera' - verbose_name = 'Konfera (Node)' - verbose_name_plural = 'Konfery (Node)' - konfera = models.OneToOneField(Konfera, - on_delete=models.PROTECT, # Pokud chci mazat téma, musím si Node pořešit ručně - verbose_name = "konfera", - null=True, - blank=False) - - def aktualizuj_nazev(self): - self.nazev = "KonferaNode: "+str(self.konfera) - -class ClanekNode(TreeNode): +class OrgTextNode(TreeNode): class Meta: db_table = 'seminar_nodes_clanek' verbose_name = 'Článek (Node)' verbose_name_plural = 'Články (Node)' - clanek = models.OneToOneField(Clanek, - on_delete=models.PROTECT, # Pokud chci mazat téma, musím si Node pořešit ručně - verbose_name = "článek", - null=True, - blank=False) + + organizator = models.ForeignKey(Organizator, + null=False, + blank=False, + on_delete=models.DO_NOTHING, + verbose_name="Organizátor", + ) + org_verejny = models.BooleanField(default = True, + verbose_name = "Org je veřejný?", + help_text = "Pokud ano, bude org pod článkem podepsaný", + null=False, + ) def aktualizuj_nazev(self): - self.nazev = "ClanekNode: "+str(self.clanek) + return f"OrgTextNode začínající následujícim: {self.first_child.nazev}" - def getOdkazStr(self): - return str(self.clanek) + # FIXME!!! + #def getOdkazStr(self): + # return str(self.clanek) class UlohaZadaniNode(TreeNode): @@ -1486,7 +1436,7 @@ class CastNode(TreeNode): def getOdkazStr(self): return str(self.nadpis) -class OtisteneReseniNode(TreeNode): +class ReseniNode(TreeNode): class Meta: db_table = 'seminar_nodes_otistene_reseni' verbose_name = 'Otištěné řešení (Node)'