From d9daca0358c3376cd952b7ef96ea72a2552064b3 Mon Sep 17 00:00:00 2001 From: "Pavel \"LEdoian\" Turinsky" Date: Tue, 13 Aug 2019 20:57:33 +0200 Subject: [PATCH] =?UTF-8?q?P=C5=99id=C3=A1no=20django-polymorphic,=20polym?= =?UTF-8?q?orfizov=C3=A1ny=20TreeNody=20+=20p=C5=99id=C3=A1n=20=5F=5Fstr?= =?UTF-8?q?=5F=5F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Vyřeší to naše problémy s TreeNody, možná... --- mamweb/settings_common.py | 2 ++ requirements.txt | 1 + seminar/models.py | 25 ++++++++++++++++++++++++- 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/mamweb/settings_common.py b/mamweb/settings_common.py index 6201d348..995bc4ad 100644 --- a/mamweb/settings_common.py +++ b/mamweb/settings_common.py @@ -115,6 +115,8 @@ INSTALLED_APPS = ( 'imagekit', + 'polymorphic', + # MaMweb 'mamweb', 'seminar', diff --git a/requirements.txt b/requirements.txt index 0b73a6d4..2bcec862 100644 --- a/requirements.txt +++ b/requirements.txt @@ -25,6 +25,7 @@ django-taggit django-autocomplete-light==2.3.6 django-crispy-forms django-imagekit +django-polymorphic # Comments akismet==1.0.1 diff --git a/seminar/models.py b/seminar/models.py index e87aa325..cab97533 100644 --- a/seminar/models.py +++ b/seminar/models.py @@ -25,6 +25,7 @@ from seminar.utils import roman from unidecode import unidecode +from polymorphic.models import PolymorphicModel class SeminarModelBase(models.Model): @@ -1139,7 +1140,7 @@ class Obrazek(SeminarModelBase): help_text = 'Černobílá verze obrázku do čísla', upload_to = 'obrazky/%Y/%m/%d/', blank=True, null=True) -class TreeNode(models.Model): +class TreeNode(PolymorphicModel): class Meta: db_table = "seminar_nodes_treenode" verbose_name = "TreeNode" @@ -1170,6 +1171,8 @@ class TreeNode(models.Model): if self.succ: self.succ.print_tree(indent=indent) + def __str__(self): + return "Generický TreeNode!" class RocnikNode(TreeNode): class Meta: @@ -1179,6 +1182,8 @@ class RocnikNode(TreeNode): rocnik = models.OneToOneField(Rocnik, on_delete = models.PROTECT, # Pokud chci mazat ročník, musím si Node pořešit ručně verbose_name = "ročník") + def __str__(self): + return 'RocnikNode: '+str(self.rocnik) class CisloNode(TreeNode): class Meta: @@ -1188,12 +1193,16 @@ class CisloNode(TreeNode): cislo = models.OneToOneField(Cislo, on_delete = models.PROTECT, # Pokud chci mazat číslo, musím si Node pořešit ručně verbose_name = "číslo") + def __str__(self): + return 'CisloNode: '+str(self.cislo) class MezicisloNode(TreeNode): class Meta: db_table = 'seminar_nodes_mezicislo' verbose_name = 'Mezičíslo (Node)' verbose_name_plural = 'Mezičísla (Node)' + def __str__(self): + return 'MezicisloNode' class TemaVCisleNode(TreeNode): """ Obsahuje příspěvky k tématu v daném čísle """ @@ -1204,6 +1213,8 @@ class TemaVCisleNode(TreeNode): tema = models.ForeignKey(Tema, on_delete=models.PROTECT, # Pokud chci mazat téma, musím si Node pořešit ručně verbose_name = "téma v čísle") + def __str__(self): + return 'TemaVCisleNode: tema: '+str(self.tema) class KonferaNode(TreeNode): class Meta: @@ -1215,6 +1226,8 @@ class KonferaNode(TreeNode): verbose_name = "konfera", null=True, blank=False) + def __str__(self): + return 'KonferaNode: '+str(self.konfera) class ClanekNode(TreeNode): class Meta: @@ -1226,6 +1239,8 @@ class ClanekNode(TreeNode): verbose_name = "článek", null=True, blank=False) + def __str__(self): + return 'ClanekNode: '+str(self.clanek) class UlohaZadaniNode(TreeNode): class Meta: @@ -1237,6 +1252,8 @@ class UlohaZadaniNode(TreeNode): verbose_name = "úloha", null=True, blank=False) + def __str__(self): + return 'UlohaZadaniNode: '+str(self.uloha) class PohadkaNode(TreeNode): class Meta: @@ -1247,6 +1264,8 @@ class PohadkaNode(TreeNode): on_delete=models.PROTECT, # Pokud chci mazat pohádku, musím si Node pořešit ručně verbose_name = "pohádka", ) + def __str__(self): + return 'PohadkaNode: '+str(self.pohadka) class UlohaVzorakNode(TreeNode): class Meta: @@ -1258,6 +1277,8 @@ class UlohaVzorakNode(TreeNode): verbose_name = "úloha", null=True, blank=False) + def __str__(self): + return 'UlohaVzorakNode: '+str(self.uloha) class TextNode(TreeNode): class Meta: @@ -1267,6 +1288,8 @@ class TextNode(TreeNode): text = models.ForeignKey(Text, on_delete=models.PROTECT, verbose_name = 'text') + def __str__(self): + return 'TextNode: '+str(self.text) ## FIXME: Logiku přesunout do views. #class VysledkyBase(SeminarModelBase):