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 diff --git a/seminar/models.py b/seminar/models.py index c0f2db0d..a6379508 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'] @@ -574,7 +576,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 +597,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 +662,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 +677,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 +708,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') @@ -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) @@ -765,10 +768,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)')