# -*- coding: utf-8 -*- from django.db import models from django.contrib import auth from django.utils import timezone from django.conf import settings # # Mělo by být částečně vytaženo z Aesopa # viz https://ovvp.mff.cuni.cz/wiki/aesop/export-skol. # class Skola(models.Model): class Meta: db_table = 'seminar_skoly' verbose_name = u'Škola' verbose_name_plural = u'Školy' # Interní ID id = models.AutoField(primary_key = True) # Aesopi ID "izo:..." nebo "aesop:..." # NULL znamená v exportu do aesopa "ufo" aesop_id = models.CharField(u'Aesop ID', max_length=32, blank=True, default='', help_text=u'Aesopi ID typu "izo:..." nebo "aesop:..."') # IZO školy (jen české školy) izo = models.CharField(u'IZO', max_length=32, blank=True, help_text=u'IZO školy (jen české školy)') # Celý název školy nazev = models.CharField(u'název', max_length=256, help_text=u'Celý název školy') # Zkraceny nazev pro zobrazení ve výsledkovce, volitelné. # Není v Aesopovi, musíme vytvářet sami. kratky_nazev = models.CharField(u'zkrácený název', max_length=256, blank=True, help_text="Zkrácený název pro zobrazení ve výsledkovce") # Ulice může být jen číslo ulice = models.CharField(u'ulice', max_length=256) mesto = models.CharField(u'město', max_length=256) psc = models.CharField(u'PSČ', max_length=32) # ISO 3166-1 dvojznakovy kod zeme velkym pismem (CZ, SK) stat = models.CharField(u'kód státu', max_length=2, default='CZ', help_text=u'ISO 3166-1 kód zeme velkými písmeny (CZ, SK, ...)') def __unicode__(self): return u'%s, %s' % (self.nazev, self.mesto) class Resitel(models.Model): class Meta: db_table = 'seminar_resitele' verbose_name = u'Řešitel' verbose_name_plural = u'Řešitelé' ordering = ['prijmeni', 'jmeno'] # Interní ID id = models.AutoField(primary_key = True) jmeno = models.CharField(u'jméno', max_length=256) prijmeni = models.CharField(u'příjmení', max_length=256) # User, pokud má na webu účet user = models.OneToOneField(settings.AUTH_USER_MODEL, blank=True, null=True, verbose_name=u'uživatel') # Pohlaví. Že ho neznáme se snad nestane (a ušetří to práci při programování) pohlavi_muz = models.BooleanField(u'pohlaví (muž)', default=False) skola = models.OneToOneField(Skola, blank=True, null=True, verbose_name=u'škola') # Očekávaný rok maturity a vyřazení z aktivních řešitelů rok_maturity = models.IntegerField(u'rok maturity') email = models.EmailField(u'e-mail', max_length=256, blank=True, default='') telefon = models.CharField(u'telefon', max_length=256, blank=True, default='') datum_narozeni = models.DateField(u'datum narození', blank=True, null=True) # NULL dokud nedali souhlas datum_souhlasu_udaje = models.DateField(u'datum souhlasu (údaje)', blank=True, null=True, help_text=u'Datum souhlasu se zpracováním osobních údajů') # NULL dokud nedali souhlas datum_souhlasu_zasilani = models.DateField(u'datum souhlasu (spam)', blank=True, null=True, help_text=u'Datum souhlasu se zasíláním MFF materiálů') # Alespoň odhad (rok či i měsíc) datum_prihlaseni = models.DateField(u'datum přihlášení', default=timezone.now) ZASILAT_DOMU = 'domu' ZASILAT_DO_SKOLY = 'do_skoly' ZASILAT_NIKAM = 'nikam' ZASILAT_CHOICES = [ (ZASILAT_DOMU, u'Domů'), (ZASILAT_DO_SKOLY, u'Do školy'), (ZASILAT_NIKAM, u'Nikam'), ] zasilat = models.CharField(u'kam zasílat', max_length=32, choices=ZASILAT_CHOICES, blank=False, default=ZASILAT_DOMU) # Ulice může být i jen číslo ulice = models.CharField(u'ulice', max_length=256, blank=True, default='') mesto = models.CharField(u'město', max_length=256, blank=True, default='') psc = models.CharField(u'PSČ', max_length=32, blank=True, default='') # ISO 3166-1 dvojznakovy kod zeme velkym pismem (CZ, SK) stat = models.CharField(u'kód státu', max_length=2, help_text=u'ISO 3166-1 kód zeme velkými písmeny (CZ, SK, ...)', default='CZ') def __unicode__(self): return u'%s %s' % (self.jmeno, self.prijmeni) class Rocnik(models.Model): class Meta: db_table = 'seminar_rocniky' verbose_name = u'Ročník' verbose_name_plural = u'Ročníky' ordering = ['rocnik'] # Interní ID id = models.AutoField(primary_key = True) rocnik = models.IntegerField(u'číslo ročníku') class Cislo(models.Model): class Meta: db_table = 'seminar_cisla' verbose_name = u'Číslo' verbose_name_plural = u'Čísla' ordering = ['rocnik__rocnik', 'cislo'] # Interní ID id = models.AutoField(primary_key = True) rocnik = models.ForeignKey(Rocnik, verbose_name=u'ročník') cislo = models.CharField(u'název čísla', max_length=32, help_text=u'Většinou jen "1", vyjímečně "7-8"') datum_vydani = models.DateField(u'datum vydání', blank=True, null=True, help_text=u'Datum vydání finální verze') datum_deadline = models.DateField(u'datum deadline', blank=True, null=True, help_text=u'Datum pro příjem řešení úloh zadaných v tomto čísle') def kod(self): return u'%s.%s' % (self.rocnik.rocnik, self.cislo) class Problem(models.Model): class Meta: db_table = 'seminar_problemy' verbose_name = u'Problém' verbose_name_plural = u'Problémy' # Interní ID id = models.AutoField(primary_key = True) nazev = models.CharField(u'název', max_length=256) TYP_ULOHA = 'uloha' TYP_TEMA = 'tema' TYP_SERIAL = 'serial' TYP_ORG_CLANEK = 'org-clanek' TYP_RES_CLANEK = 'res-clanek' TYP_CHOICES = [ (TYP_ULOHA, u'Úloha'), (TYP_TEMA, u'Téma'), (TYP_SERIAL, u'Seriál'), (TYP_ORG_CLANEK, u'Organizátorský článek'), (TYP_RES_CLANEK, u'Řesitelský článek'), ] typ = models.CharField(u'typ problému', max_length=32, choices=TYP_CHOICES, blank=False, default=TYP_ULOHA) STAV_NAVRH = 'navrh' STAV_ZADANY = 'zadany' STAV_SMAZANY = 'smazany' STAV_CHOICES = [ (STAV_NAVRH, u'Návrh'), (STAV_ZADANY, u'Zadaný'), (STAV_SMAZANY, u'Smazaný'), ] stav = models.CharField(u'stav problému', max_length=32, choices=STAV_CHOICES, blank=False, default=STAV_NAVRH) text_org = None text_verejny = None zadavatel opravovatel kod = models.CharField(u'lokální kód', max_length=32, blank=True, default='', help_text=u'Číslo/kód úlohy v čísle nebo kód tématu/článku/seriálu v ročníku') cislo_zadani = models.ForeignKey(Cislo, verbose_name=u'číslo zadání', blank=True, null=True) cislo_reseni = models.ForeignKey(Cislo, verbose_name=u'číslo řešení', blank=True, null=True, help_text=u'Číslo s řešením úlohy. Jen pri ') # # # class Reseni(models.Model): # # class Meta: # db_table = 'seminar_reseni' # verbose_name = u'Řešení' # verbose_name_plural = u'Řešení' # ordering = ['rocnik__rocnik', 'cislo'] # # # Interní ID # id = models.AutoField(primary_key = True) # # #