Odstrel Modelu Odevzdavatko #64
2 changed files with 44 additions and 9 deletions
|
@ -0,0 +1,29 @@
|
||||||
|
# Generated by Django 4.2.13 on 2024-10-22 22:31
|
||||||
|
|
||||||
|
from django.db import migrations
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('seminar', '0131_odstrel_odevzdavatka_pre'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterModelOptions(
|
||||||
|
name='hodnoceni',
|
||||||
|
options={'managed': False, 'verbose_name': 'Hodnocení', 'verbose_name_plural': 'Hodnocení'},
|
||||||
|
),
|
||||||
|
migrations.AlterModelOptions(
|
||||||
|
name='prilohareseni',
|
||||||
|
options={'managed': False, 'ordering': ['reseni', 'vytvoreno'], 'verbose_name': 'Příloha řešení', 'verbose_name_plural': 'Přílohy řešení'},
|
||||||
|
),
|
||||||
|
migrations.AlterModelOptions(
|
||||||
|
name='reseni',
|
||||||
|
options={'managed': False, 'ordering': ['-cas_doruceni'], 'verbose_name': 'Řešení', 'verbose_name_plural': 'Řešení'},
|
||||||
|
),
|
||||||
|
migrations.AlterModelOptions(
|
||||||
|
name='reseni_resitele',
|
||||||
|
options={'managed': False, 'ordering': ['reseni', 'resitele'], 'verbose_name': 'Řešení řešitelů', 'verbose_name_plural': 'Řešení řešitelů'},
|
||||||
|
),
|
||||||
|
]
|
|
@ -26,15 +26,18 @@ class Reseni(bm.SeminarModelBase):
|
||||||
verbose_name_plural = 'Řešení'
|
verbose_name_plural = 'Řešení'
|
||||||
#ordering = ['-problem', 'resitele'] # FIXME: Takhle to chceme, ale nefunguje to.
|
#ordering = ['-problem', 'resitele'] # FIXME: Takhle to chceme, ale nefunguje to.
|
||||||
ordering = ['-cas_doruceni']
|
ordering = ['-cas_doruceni']
|
||||||
|
managed = False
|
||||||
|
|
||||||
# Interní ID
|
# Interní ID
|
||||||
id = models.AutoField(primary_key = True)
|
id = models.AutoField(primary_key = True)
|
||||||
|
|
||||||
# Ke každé dvojici řešní a problém existuje nanejvýš jedno hodnocení, doplnění vazby.
|
# Ke každé dvojici řešní a problém existuje nanejvýš jedno hodnocení, doplnění vazby.
|
||||||
problem = models.ManyToManyField(am.Problem, verbose_name='problém', help_text='Problém',
|
problem = models.ManyToManyField(am.Problem, verbose_name='problém', help_text='Problém',
|
||||||
|
related_name='problem_old',
|
||||||
through='Hodnoceni')
|
through='Hodnoceni')
|
||||||
|
|
||||||
resitele = models.ManyToManyField(Resitel, verbose_name='autoři řešení',
|
resitele = models.ManyToManyField(Resitel, verbose_name='autoři řešení',
|
||||||
|
related_name='resitele_old',
|
||||||
help_text='Seznam autorů řešení', through='Reseni_Resitele')
|
help_text='Seznam autorů řešení', through='Reseni_Resitele')
|
||||||
|
|
||||||
|
|
||||||
|
@ -51,8 +54,8 @@ class Reseni(bm.SeminarModelBase):
|
||||||
forma = models.CharField('forma řešení', max_length=16, choices=FORMA_CHOICES, blank=False,
|
forma = models.CharField('forma řešení', max_length=16, choices=FORMA_CHOICES, blank=False,
|
||||||
default=FORMA_EMAIL)
|
default=FORMA_EMAIL)
|
||||||
|
|
||||||
text_cely = models.OneToOneField('ReseniNode', verbose_name='Plná verze textu řešení',
|
text_cely = models.OneToOneField('seminar.ReseniNode', verbose_name='Plná verze textu řešení',
|
||||||
blank=True, null=True, related_name="reseni_cely_set",
|
blank=True, null=True, related_name="reseni_cely_set_old",
|
||||||
on_delete=models.PROTECT)
|
on_delete=models.PROTECT)
|
||||||
|
|
||||||
poznamka = models.TextField('neveřejná poznámka', blank=True,
|
poznamka = models.TextField('neveřejná poznámka', blank=True,
|
||||||
|
@ -95,6 +98,7 @@ class Hodnoceni(bm.SeminarModelBase):
|
||||||
db_table = 'seminar_hodnoceni'
|
db_table = 'seminar_hodnoceni'
|
||||||
verbose_name = 'Hodnocení'
|
verbose_name = 'Hodnocení'
|
||||||
verbose_name_plural = 'Hodnocení'
|
verbose_name_plural = 'Hodnocení'
|
||||||
|
managed = False
|
||||||
|
|
||||||
# Interní ID
|
# Interní ID
|
||||||
id = models.AutoField(primary_key = True)
|
id = models.AutoField(primary_key = True)
|
||||||
|
@ -104,16 +108,16 @@ class Hodnoceni(bm.SeminarModelBase):
|
||||||
blank=True, null=True)
|
blank=True, null=True)
|
||||||
|
|
||||||
cislo_body = models.ForeignKey(am.Cislo, verbose_name='číslo pro body',
|
cislo_body = models.ForeignKey(am.Cislo, verbose_name='číslo pro body',
|
||||||
related_name='hodnoceni', blank=True, null=True, on_delete=models.PROTECT)
|
related_name='hodnoceni_old', blank=True, null=True, on_delete=models.PROTECT)
|
||||||
|
|
||||||
# V ročníku < 26 nastaveno na deadline vygenerovaný pro původní cislo_body
|
# V ročníku < 26 nastaveno na deadline vygenerovaný pro původní cislo_body
|
||||||
deadline_body = models.ForeignKey(am.Deadline, verbose_name='deadline pro body',
|
deadline_body = models.ForeignKey(am.Deadline, verbose_name='deadline pro body',
|
||||||
related_name='hodnoceni', blank=True, null=True, on_delete=models.PROTECT)
|
related_name='hodnoceni_old', blank=True, null=True, on_delete=models.PROTECT)
|
||||||
|
|
||||||
reseni = models.ForeignKey(Reseni, verbose_name='řešení', on_delete=models.CASCADE)
|
reseni = models.ForeignKey(Reseni, verbose_name='řešení', on_delete=models.CASCADE, related_name='hodnoceni_old')
|
||||||
|
|
||||||
problem = models.ForeignKey(am.Problem, verbose_name='problém',
|
problem = models.ForeignKey(am.Problem, verbose_name='problém',
|
||||||
related_name='hodnoceni', on_delete=models.PROTECT)
|
related_name='hodnoceni_old', on_delete=models.PROTECT)
|
||||||
|
|
||||||
feedback = models.TextField('zpětná vazba', blank=True, default='', help_text='Zpětná vazba řešiteli (plain text)')
|
feedback = models.TextField('zpětná vazba', blank=True, default='', help_text='Zpětná vazba řešiteli (plain text)')
|
||||||
|
|
||||||
|
@ -190,11 +194,12 @@ class PrilohaReseni(bm.SeminarModelBase):
|
||||||
verbose_name = 'Příloha řešení'
|
verbose_name = 'Příloha řešení'
|
||||||
verbose_name_plural = 'Přílohy řešení'
|
verbose_name_plural = 'Přílohy řešení'
|
||||||
ordering = ['reseni', 'vytvoreno']
|
ordering = ['reseni', 'vytvoreno']
|
||||||
|
managed = False
|
||||||
|
|
||||||
# Interní ID
|
# Interní ID
|
||||||
id = models.AutoField(primary_key = True)
|
id = models.AutoField(primary_key = True)
|
||||||
|
|
||||||
reseni = models.ForeignKey(Reseni, verbose_name='řešení', related_name='prilohy',
|
reseni = models.ForeignKey(Reseni, verbose_name='řešení', related_name='prilohy_old',
|
||||||
on_delete=models.CASCADE)
|
on_delete=models.CASCADE)
|
||||||
|
|
||||||
vytvoreno = models.DateTimeField('vytvořeno', default=timezone.now, blank=True, editable=False)
|
vytvoreno = models.DateTimeField('vytvořeno', default=timezone.now, blank=True, editable=False)
|
||||||
|
@ -225,13 +230,14 @@ class Reseni_Resitele(models.Model):
|
||||||
verbose_name = 'Řešení řešitelů'
|
verbose_name = 'Řešení řešitelů'
|
||||||
verbose_name_plural = 'Řešení řešitelů'
|
verbose_name_plural = 'Řešení řešitelů'
|
||||||
ordering = ['reseni', 'resitele']
|
ordering = ['reseni', 'resitele']
|
||||||
|
managed = False
|
||||||
|
|
||||||
# Interní ID
|
# Interní ID
|
||||||
id = models.AutoField(primary_key = True)
|
id = models.AutoField(primary_key = True)
|
||||||
|
|
||||||
resitele = models.ForeignKey(Resitel, verbose_name='řešitel', on_delete=models.PROTECT)
|
resitele = models.ForeignKey(Resitel, verbose_name='řešitel', on_delete=models.PROTECT, related_name='rere_old')
|
||||||
|
|
||||||
reseni = models.ForeignKey(Reseni, verbose_name='řešení', on_delete=models.CASCADE)
|
reseni = models.ForeignKey(Reseni, verbose_name='řešení', on_delete=models.CASCADE, related_name='rere_old')
|
||||||
|
|
||||||
# podil - jakou merou se ktery resitel podilel na danem reseni
|
# podil - jakou merou se ktery resitel podilel na danem reseni
|
||||||
# - pouziti v budoucnu, pokud by resitele nemeli dostat vsichni stejne bodu za spolecne reseni
|
# - pouziti v budoucnu, pokud by resitele nemeli dostat vsichni stejne bodu za spolecne reseni
|
||||||
|
|
Loading…
Reference in a new issue