from django.db import models from soustredeni.models import Soustredeni from personalni.models import Organizator, Osoba class Seznam(models.Model): class Meta: db_table = 'prednasky_seznam' verbose_name = 'Seznam přednášek' verbose_name_plural = 'Seznamy přednášek' ordering = ['soustredeni', 'stav'] class Stav(models.IntegerChoices): NAVRH = 1, "Návrh" BUDE = 2, "Bude" id = models.AutoField(primary_key = True) soustredeni = models.ForeignKey(Soustredeni,null = True, default = None, on_delete=models.PROTECT) stav = models.IntegerField('Stav', choices=Stav.choices, default=Stav.NAVRH) def __str__(self): return "Seznam {}přednášek na {}".format("návrhů " if self.stav == Seznam.Stav.NAVRH else "", self.soustredeni) class Prednaska(models.Model): class Meta: db_table = 'prednasky_prednaska' verbose_name = 'Přednáška' verbose_name_plural = 'Přednášky' ordering = ['org', 'nazev'] class Obtiznost(models.IntegerChoices): LEHKA = 1, "Lehká" STREDNI = 2, "Střední" TEZKA = 3, "Těžká" id = models.AutoField(primary_key = True) nazev = models.CharField('Název', max_length = 300) org = models.ForeignKey(Organizator, on_delete=models.PROTECT) popis = models.TextField('Popis pro orgy',null = True, blank = True,help_text = 'Neveřejný popis pro ostatní orgy') anotace = models.TextField('Anotace',null = True, blank = True, help_text = 'Veřejná anotace v hlasování') obtiznost = models.IntegerField('Obtížnost', choices=Obtiznost.choices) obor = models.CharField('Obor', max_length = 5, help_text = 'Podmnožina MFIOB') klicova = models.CharField('Klíčová slova', max_length = 200, null = True, blank = True) seznamy = models.ManyToManyField(Seznam) def __str__(self): return "{} ({})".format(self.nazev, self.org) class Znalost(models.Model): class Meta: db_table = 'prednasky_znalost' verbose_name = 'Znalost k přednáškám' verbose_name_plural = 'Znalosti k přednáškám' nazev = models.CharField('Nadpis', max_length=200, blank=False, null=False, help_text = 'Např. Neuronové sítě') text = models.TextField('Detailní popis', blank=True, null=True, help_text="Např. Perceptron, vrstevnatá síť, forward a backward propagation") seznamy = models.ManyToManyField(Seznam) def __str__(self): return self.nazev class HlasovaniOZnalostech(models.Model): class ODPOVED(models.IntegerChoices): UMIM = -1, 'Tohle celkem umím' CIRCA = 0, 'Už jsem o tom slyšel, ale neřekl bychm, že to úplně umím' NEUMIM = 1, 'Tohle vůbec neznám' odpoved = models.CharField(u'odpověď', max_length=16, choices=ODPOVED.choices, blank=False, null=False) znalost = models.ForeignKey(Znalost, on_delete=models.CASCADE, blank=False, null=False) ucastnik = models.ForeignKey(Osoba, on_delete=models.CASCADE, blank=False, null=False) seznam = models.ForeignKey(Seznam, on_delete=models.SET_NULL, blank=True, null=True) class Hlasovani(models.Model): class Meta: db_table = 'prednasky_hlasovani' verbose_name = 'Hlasování' verbose_name_plural = 'Hlasování' ordering = ['ucastnik', 'prednaska'] class Body(models.IntegerChoices): NECHCI = -1, "rozhodně nechci" JEDNO = 0, "je mi to jedno" CHCI = 1, "rozhodně chci" id = models.AutoField(primary_key = True) prednaska = models.ForeignKey(Prednaska, on_delete=models.CASCADE) body = models.IntegerField('Body', default = Body.JEDNO, choices = Body.choices) ucastnik = models.CharField('Účastník', max_length = 100) seznam = models.ForeignKey(Seznam,null=True,on_delete=models.SET_NULL) def __str__(self): return "{} dal {} bodů {} v seznamu {}".format(self.ucastnik, self.body, self.prednaska, self.seznam)