From e33d602635d2adc6bdf83ea2e5fbe75fdd643170 Mon Sep 17 00:00:00 2001 From: LEdoian Date: Wed, 24 Apr 2019 10:25:00 +0200 Subject: [PATCH 1/3] =?UTF-8?q?Requirements=20umo=C5=BE=C5=88uj=C3=AD=20li?= =?UTF-8?q?bovolnou=20dostate=C4=8Dn=C4=9B=20novou=20verzi=20Djanga=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 02104910..25d438d1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -12,7 +12,7 @@ Unidecode==1.0.22 # Django and modules -Django==1.11.15 +Django>=1.11.17,<2.0 #django-bootstrap-sass django-mptt==0.9.1 django-reversion==2.0.13 From 1d46517581865b687aa0a53a13df438364a9e6c0 Mon Sep 17 00:00:00 2001 From: "Tomas \"Jethro\" Pokorny" Date: Tue, 30 Apr 2019 21:19:02 +0200 Subject: [PATCH 2/3] Opravy clashu related_name --- seminar/models.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/seminar/models.py b/seminar/models.py index 02d8f132..91b44d44 100644 --- a/seminar/models.py +++ b/seminar/models.py @@ -574,7 +574,7 @@ class Problem(SeminarModelBase): # Problém má podproblémy nadproblem = models.ForeignKey('self', verbose_name='nadřazený problém', - related_name='nadproblem', null=True, blank=True) + related_name='nadproblem_%(class)s', null=True, blank=True) STAV_NAVRH = 'navrh' STAV_ZADANY = 'zadany' @@ -595,13 +595,13 @@ class Problem(SeminarModelBase): autor = models.ForeignKey(Organizator, verbose_name='autor problému', - related_name='autor_problemu', null=True, blank=True) + related_name='autor_problemu_%(class)s', null=True, blank=True) garant = models.ForeignKey(Organizator, verbose_name='garant zadaného problému', - related_name='garant_problemu', null=True, blank=True) + related_name='garant_problemu_%(class)s', null=True, blank=True) opravovatele = models.ManyToManyField(Organizator, verbose_name='opravovatelé', - null=True, blank=True, related_name='opravovatele_uloh') + null=True, blank=True, related_name='opravovatele_%(class)s') kod = models.CharField('lokální kód', max_length=32, blank=True, default='', help_text='Číslo/kód úlohy v čísle nebo kód tématu/článku/seriálu v ročníku') @@ -660,7 +660,7 @@ class Tema(Problem): ] typ = models.CharField('Typ tématu', max_length=16, choices=TEMA_CHOICES, blank=False, default=TEMA_TEMA) - rocnik = models.ForeignKey(Rocnik, verbose_name='ročník', related_name='rocnik',blank=True, null=True) + rocnik = models.ForeignKey(Rocnik, verbose_name='ročník',blank=True, null=True) def kod_v_rocniku(self): if self.stav == 'zadany': @@ -675,7 +675,7 @@ class Clanek(Problem): verbose_name = 'Článek' verbose_name_plural = 'Články' - cislo = models.ForeignKey(Cislo, verbose_name='číslo', related_name='cislo', blank=True, null=True) + cislo = models.ForeignKey(Cislo, verbose_name='číslo', blank=True, null=True) def kod_v_rocniku(self): if self.stav == 'zadany': # Nemělo by být potřeba @@ -706,9 +706,9 @@ class Uloha(Problem): verbose_name_plural = 'Úlohy' - zadani = models.ForeignKey(Text, verbose_name='veřejné zadání', related_name='zadani', blank=True, null=True) + zadani = models.ForeignKey(Text, verbose_name='veřejné zadání', blank=True, null=True) - vzorak = models.ForeignKey(Text, verbose_name='vzorové řešení', related_name='vzorak', blank=True, null=True) + vzorak = models.ForeignKey(Text, verbose_name='vzorové řešení', blank=True, null=True) cislo_zadani = models.ForeignKey(Cislo, verbose_name='číslo zadání', blank=True, null=True, related_name='zadane_ulohy') @@ -765,10 +765,10 @@ class Reseni(SeminarModelBase): default=FORMA_EMAIL) text_cely = models.ForeignKey(Text, verbose_name='Plná verze textu řešení', - blank=True, null=True) + blank=True, null=True, related_name="reseni_cely_set") text_zkraceny = models.ManyToManyField(Text, verbose_name='zkrácené verze řešení', - help_text='Seznam úryvků z ř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)') From 72f309936621dc4c879791280ed0d2d06f387038 Mon Sep 17 00:00:00 2001 From: LEdoian Date: Tue, 30 Apr 2019 21:19:52 +0200 Subject: [PATCH 3/3] =?UTF-8?q?Fixy=20probl=C3=A9m=C5=AF=20s=20abstraktnos?= =?UTF-8?q?t=C3=AD=20modelu=20a=20=C5=A1patn=C3=BDch=20identifik=C3=A1tor?= =?UTF-8?q?=C5=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- seminar/models.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/seminar/models.py b/seminar/models.py index 02d8f132..3d5398d8 100644 --- a/seminar/models.py +++ b/seminar/models.py @@ -561,7 +561,9 @@ class Soustredeni(SeminarModelBase): class Problem(SeminarModelBase): class Meta: - abstract = True + # 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? + #abstract = True verbose_name = 'Problém' verbose_name_plural = 'Problémy' ordering = ['nazev'] @@ -738,7 +740,8 @@ class Reseni(SeminarModelBase): db_table = 'seminar_reseni' verbose_name = 'Řešení' verbose_name_plural = 'Řešení' - ordering = ['-problem_id', 'resitel'] + #ordering = ['-problem', 'resitele'] # FIXME: Takhle to chceme, ale nefunguje to. + ordering = ['-cas_doruceni'] # Interní ID id = models.AutoField(primary_key = True) @@ -850,7 +853,7 @@ class PrilohaReseni(SeminarModelBase): db_table = 'seminar_priloha_reseni' verbose_name = 'Příloha řešení' verbose_name_plural = 'Přílohy řešení' - ordering = ['reseni', 'timestamp'] + ordering = ['reseni', 'vytvoreno'] # Interní ID id = models.AutoField(primary_key = True)