Web M&M
https://mam.matfyz.cz
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2374 lines
115 KiB
2374 lines
115 KiB
# Generated by Django 2.2.6 on 2019-10-30 20:20
|
|
|
|
from django.conf import settings
|
|
from django.db import migrations, models
|
|
import django.db.migrations.operations.special
|
|
import django.db.models.deletion
|
|
import django.utils.timezone
|
|
import django_countries.fields
|
|
import imagekit.models.fields
|
|
import seminar.models
|
|
import taggit.managers
|
|
|
|
|
|
# Functions from the following migrations need manual copying.
|
|
# Move them and any dependencies into this file, then update the
|
|
# RunPython operations to refer to the local versions:
|
|
|
|
# seminar.migrations.0051_resitel_to_osoba
|
|
|
|
def resitel_to_osoba(apps,schema_editor):
|
|
Resitel = apps.get_model('seminar','Resitel')
|
|
Osoba = apps.get_model('seminar','Osoba')
|
|
for r in Resitel.objects.all():
|
|
o = Osoba()
|
|
o.datum_narozeni = r.datum_narozeni
|
|
o.datum_registrace = r.datum_prihlaseni
|
|
o.datum_souhlasu_udaje = r.datum_souhlasu_udaje
|
|
o.datum_souhlasu_zasilani = r.datum_souhlasu_zasilani
|
|
o.email = r.email
|
|
o.jmeno = r.jmeno
|
|
o.mesto = r.mesto
|
|
o.pohlavi_muz = r.pohlavi_muz
|
|
o.prijmeni = r.prijmeni
|
|
o.psc = r.psc
|
|
o.stat = r.stat
|
|
o.telefon = r.telefon
|
|
o.ulice = r.ulice
|
|
o.user = r.user
|
|
if o.user:
|
|
u = o.user
|
|
if u.first_name:
|
|
if not o.jmeno:
|
|
o.jmeno = u.first_name
|
|
u.first_name = 'Použij osobu!'
|
|
elif o.jmeno == u.first_name:
|
|
u.first_name = 'Použij osobu!'
|
|
else:
|
|
raise ValueError('jmeno a first_name rozdílné: "{}" vs. "{}"'.format(o.jmeno, u.first_name))
|
|
if u.last_name:
|
|
if not o.prijmeni:
|
|
o.prijmeni = u.last_name
|
|
u.last_name = 'Použij osobu!'
|
|
elif o.prijmeni == u.last_name:
|
|
u.last_name = 'Použij osobu!'
|
|
else:
|
|
raise ValueError('prijmeni a last_name rozdílné: "{}" vs. "{}"'.format(o.prijmeni, u.last_name))
|
|
if u.email:
|
|
if not o.email:
|
|
o.email = u.email
|
|
u.email = 'Použij osobu!'
|
|
elif o.email == u.email:
|
|
u.email = 'Použij osobu!'
|
|
else:
|
|
raise ValueError('o.email a u.email rozdílné: "{}" vs. "{}"'.format(o.email, u.email))
|
|
u.save()
|
|
|
|
|
|
o.save()
|
|
r.osoba = o
|
|
r.save()
|
|
|
|
def osoba_to_resitel(apps, schema_editor):
|
|
Resitel = apps.get_model('seminar','Resitel')
|
|
Osoba = apps.get_model('seminar','Osoba')
|
|
for r in Resitel.objects.all():
|
|
o = r.osoba
|
|
r.datum_narozeni = o.datum_narozeni
|
|
r.datum_prihlaseni = o.datum_registrace
|
|
r.datum_souhlasu_udaje = o.datum_souhlasu_udaje
|
|
r.datum_souhlasu_zasilani = o.datum_souhlasu_zasilani
|
|
r.email = o.email
|
|
r.jmeno = o.jmeno
|
|
r.mesto = o.mesto
|
|
r.pohlavi_muz = o.pohlavi_muz
|
|
r.prijmeni = o.prijmeni
|
|
r.psc = o.psc
|
|
r.stat = o.stat
|
|
r.telefon = o.telefon
|
|
r.ulice = o.ulice
|
|
r.user = o.user
|
|
r.save()
|
|
o.delete()
|
|
|
|
|
|
# seminar.migrations.0052_user_to_organizator
|
|
|
|
def spoj_k_organizatorum_osoby(apps, scema_editor):
|
|
Organizator = apps.get_model('seminar', 'Organizator')
|
|
Resitel = apps.get_model('seminar', 'Resitel')
|
|
Osoba = apps.get_model('seminar', 'Osoba')
|
|
for org in Organizator.objects.all():
|
|
|
|
# Spárování organizátora s osobou
|
|
user = org.user
|
|
resitele = Resitel.objects.filter(user=user)
|
|
if resitele.count() != 0:
|
|
osoba = resitele.first().osoba
|
|
else:
|
|
osoba = Osoba(user=user)
|
|
|
|
# Přesun informací z usera do osoby
|
|
# pro řešitele již v minule migraci
|
|
osoba.jmeno = user.first_name
|
|
osoba.prijmeni = user.last_name
|
|
osoba.email = user.email
|
|
user.jmeno = "Použij osobu!"
|
|
user.prijmeni = "Použij osobu!"
|
|
user.email = "Použij osobu!"
|
|
user.save()
|
|
|
|
# Přesun informací z organizátora do jeho osoby
|
|
osoba.prezdivka = org.prezdivka if org.prezdivka is not None else ''
|
|
osoba.foto = org.foto
|
|
|
|
# Všechno uložit
|
|
osoba.save()
|
|
org.osoba = osoba
|
|
org.save()
|
|
|
|
def fix_problem(apps, schema_editor):
|
|
Problem = apps.get_model('seminar', 'Problem')
|
|
Organizator = apps.get_model('seminar', 'Organizator')
|
|
for pr in Problem.objects.all():
|
|
if pr.autor_old is not None:
|
|
pr.autor = Organizator.objects.filter(osoba__user=pr.autor_old).first()
|
|
else:
|
|
pr.autor = None
|
|
if pr.opravovatel is not None:
|
|
pr.opravovatele.add(Organizator.objects.filter(osoba__user=pr.opravovatel).first())
|
|
pr.save()
|
|
|
|
def fix_pohadka(apps, schema_editor):
|
|
Pohadka = apps.get_model('seminar', 'Pohadka')
|
|
Organizator = apps.get_model('seminar', 'Organizator')
|
|
for poh in Pohadka.objects.all():
|
|
if poh.autor_old is not None:
|
|
poh.autor = Organizator.objects.filter(osoba__user=poh.autor_old).first()
|
|
else:
|
|
poh.autor = None
|
|
poh.save()
|
|
|
|
def fix_novinka(apps, schema_editor):
|
|
Novinky = apps.get_model('seminar', 'Novinky')
|
|
Organizator = apps.get_model('seminar', 'Organizator')
|
|
for nov in Novinky.objects.all():
|
|
nov.autor = Organizator.objects.filter(osoba__user=nov.autor_old).first()
|
|
nov.save()
|
|
|
|
# seminar.migrations.0053_organizator_organizuje_od_do
|
|
|
|
def rok_to_datetime(apps,schema_editor):
|
|
Organizator = apps.get_model('seminar','Organizator')
|
|
for o in Organizator.objects.all():
|
|
rok = o.organizuje_od_roku
|
|
if rok:
|
|
o.organizuje_od = dt.datetime(rok,1,1)
|
|
rok = o.organizuje_do_roku
|
|
if rok:
|
|
o.organizuje_do = dt.datetime(rok,12,31)
|
|
o.save()
|
|
|
|
def datetime_to_rok(apps,schema_editor):
|
|
Organizator = apps.get_model('seminar','Organizator')
|
|
for o in Organizator.objects.all():
|
|
o.organizuje_od_roku = o.organizuje_od.year
|
|
o.organizuje_do_roku = o.organizuje_do.year
|
|
o.save()
|
|
|
|
# seminar.migrations.0056_vrcholy_pro_rocniky_a_cisla
|
|
|
|
def generuj_RocnikNody_a_CisloNody(apps,schema_editor):
|
|
Rocnik = apps.get_model('seminar', 'Rocnik')
|
|
RocnikNode = apps.get_model('seminar', 'RocnikNode')
|
|
Cislo = apps.get_model('seminar', 'Cislo')
|
|
CisloNode = apps.get_model('seminar', 'CisloNode')
|
|
|
|
last_rn = None # last_* slouží k navázání následníků
|
|
for r in Rocnik.objects.all():
|
|
rn = RocnikNode.objects.create(rocnik=r)
|
|
rn.save()
|
|
rn.root = rn
|
|
rn.save()
|
|
if last_rn:
|
|
last_rn.succ = rn
|
|
last_rn.save()
|
|
last_rn = rn
|
|
|
|
last_cn = None
|
|
for c in Cislo.objects.filter(rocnik=r):
|
|
cn = CisloNode.objects.create(cislo=c, root=rn)
|
|
cn.save()
|
|
if last_cn: # Jsme něčí následník
|
|
last_cn.succ = cn
|
|
last_cn.save()
|
|
else: # Jsme první v řadě, takže se musíme přidat jako first_child RočníkNodu
|
|
rn.first_child = cn
|
|
rn.save()
|
|
last_cn = cn
|
|
|
|
# seminar.migrations.0057_reseni_to_reseni_hodnoceni
|
|
|
|
def reseni_to_Reseni(apps, schema_editor):
|
|
Reseni = apps.get_model('seminar','Reseni')
|
|
Reseni_Resitele = apps.get_model('seminar','Reseni_Resitele')
|
|
Hodnoceni = apps.get_model('seminar','Hodnoceni')
|
|
|
|
for r in Reseni.objects.all():
|
|
rr = Reseni_Resitele.objects.create(resitele = r.resitel, reseni=r)
|
|
if r.body == None:
|
|
print("!!!!!!!!!!!!!!!")
|
|
print(r.id,r)
|
|
print("!!!!!!!!!!!!!!!")
|
|
else:
|
|
h = Hodnoceni.objects.create(
|
|
body=r.body,
|
|
cislo_body = r.cislo_body,
|
|
problem = r.problem_old,
|
|
reseni = r)
|
|
|
|
# seminar.migrations.0058_problem_to_uloha_tema_clanek
|
|
|
|
def poskladej_strom(apps, rodic, *texty):
|
|
Text = apps.get_model('seminar', 'Text')
|
|
TextNode = apps.get_model('seminar', 'TextNode')
|
|
if not rodic:
|
|
raise ValueError("Rodič musí být definovaný")
|
|
|
|
uz_ma_deti = False
|
|
tn = None
|
|
for txt in texty:
|
|
if not txt:
|
|
continue
|
|
# Přidej do stromu:
|
|
textobj = Text.objects.create(na_web = txt)
|
|
textobj.save()
|
|
textnode = TextNode.objects.create(text = textobj)
|
|
textnode.save()
|
|
if not uz_ma_deti:
|
|
rodic.first_child = textnode
|
|
rodic.save()
|
|
tn = rodic.first_child
|
|
uz_ma_deti = True
|
|
else:
|
|
tn.succ = textnode
|
|
tn.save()
|
|
tn = tn.succ
|
|
|
|
def uloha_to_Uloha(apps,schema_editor):
|
|
Problem = apps.get_model('seminar', 'Problem')
|
|
Uloha = apps.get_model('seminar', 'Uloha')
|
|
Text = apps.get_model('seminar', 'Text')
|
|
UlohaZadaniNode = apps.get_model('seminar', 'UlohaZadaniNode')
|
|
UlohaVzorakNode = apps.get_model('seminar', 'UlohaVzorakNode')
|
|
TextNode = apps.get_model('seminar', 'TextNode')
|
|
|
|
ulohy = Problem.objects.filter(typ = 'uloha')
|
|
for uold in ulohy:
|
|
unew = Uloha.objects.create(
|
|
problem_ptr = uold,
|
|
# Zakomentované fieldy by se už měly nacházet v příslušném problému
|
|
#nazev = uold.nazev,
|
|
#stav = uold.stav,
|
|
#zamereni = uold.zamereni,
|
|
#poznamka = uold.poznamka,
|
|
#autor = uold.autor,
|
|
#kod = uold.kod,
|
|
cislo_zadani = uold.cislo_zadani_old,
|
|
cislo_reseni = uold.cislo_reseni_old,
|
|
max_body = uold.body,
|
|
#vytvoreno = uold.vytvoreno,
|
|
)
|
|
# unew.opravovatele.add(*uold.opravovatele.all())
|
|
unew.save()
|
|
|
|
# Nody:
|
|
zadani_node = UlohaZadaniNode.objects.create(uloha = unew)
|
|
poskladej_strom(apps, zadani_node, uold.text_zadani)
|
|
zadani_node.save()
|
|
vzorak_node = UlohaVzorakNode.objects.create(uloha = unew)
|
|
poskladej_strom(apps, vzorak_node, uold.text_reseni)
|
|
vzorak_node.save()
|
|
|
|
def konfery_rucne(apps, schema_editor):
|
|
# Tohle dělat nebudu, máme aktuálně celou jednu. Ale "Errors should never pass silently"
|
|
Problem = apps.get_model('seminar', 'Problem')
|
|
pocet_konfer = Problem.objects.filter(typ = 'konfera').count()
|
|
if pocet_konfer > 0:
|
|
raise NotImplementedError("Zkonvertuj {} konfer na objekt Konfera ručně, prosím".format(pocet_konfer))
|
|
|
|
def clanek_to_Clanek(apps,schema_editor):
|
|
Problem = apps.get_model('seminar', 'Problem')
|
|
Clanek = apps.get_model('seminar', 'Clanek')
|
|
ClanekNode = apps.get_model('seminar', 'ClanekNode')
|
|
Text = apps.get_model('seminar', 'Text')
|
|
TextNode = apps.get_model('seminar', 'TextNode')
|
|
|
|
clanky = Problem.objects.filter(Q(typ='org-clanek') | Q(typ='res-clanek'))
|
|
for cl in clanky:
|
|
# Vybereme vhodné číslo pro článek z čísla zadání a čísla řešení:
|
|
if cl.cislo_zadani_old is None:
|
|
cislo = cl.cislo_reseni_old
|
|
elif cl.cislo_reseni_old is None:
|
|
cislo = cl.cislo_zadani_old
|
|
elif cl.cislo_reseni_old == cl.cislo_zadani_old:
|
|
cislo = cl.cislo_zadani_old
|
|
else:
|
|
raise ValueError("Různá čísla zadání a řešení u článku! (Článek: {})".format(cl.nazev))
|
|
|
|
clnew = Clanek.objects.create(
|
|
problem_ptr = cl,
|
|
# Problém by nemělo být potřeba upravovat
|
|
cislo = cislo,
|
|
# Body ignorujeme, protože už jsou v hodnocení
|
|
)
|
|
clnew.save()
|
|
|
|
# Aktuálně nemáme v modelu informaci o tom, jestli je to org-článek
|
|
# nebo řešitelský článek. Aby se neztratila informace, poznamenám to do
|
|
# poznámky.
|
|
cl.poznamka += "\nTyp:\t{}".format(cl.typ)
|
|
cl.save()
|
|
|
|
# Vyrobíme nody:
|
|
clnode = ClanekNode(clanek = clnew)
|
|
poskladej_strom(apps, clnode, cl.text_zadani, cl.text_reseni)
|
|
clnode.save()
|
|
|
|
def tema_to_Tema(apps, schema_editor):
|
|
Problem = apps.get_model('seminar', 'Problem')
|
|
Tema = apps.get_model('seminar', 'Tema')
|
|
TemaVCisleNode = apps.get_model('seminar', 'TemaVCisleNode')
|
|
Text = apps.get_model('seminar', 'Text')
|
|
TextNode = apps.get_model('seminar', 'TextNode')
|
|
|
|
temata = Problem.objects.filter(Q(typ = 'tema') | Q(typ='serial'))
|
|
for t in temata:
|
|
# Vymyslíme správně ročník:
|
|
if t.cislo_zadani_old is None and t.cislo_reseni_old is None:
|
|
rocnik = None
|
|
elif t.cislo_zadani_old is None:
|
|
rocnik = t.cislo_reseni_old.rocnik
|
|
elif t.cislo_reseni_old is None:
|
|
rocnik = t.cislo_zadani_old.rocnik
|
|
elif t.cislo_reseni_old.rocnik == t.cislo_zadani_old.rocnik:
|
|
rocnik = t.cislo_zadani_old.rocnik
|
|
else:
|
|
raise ValueError("Nelze mít téma přes více ročníků! (Téma: {}".format(t.nazev))
|
|
|
|
tnew = Tema.objects.create(
|
|
problem_ptr = t,
|
|
tema_typ = t.typ,
|
|
rocnik = rocnik,
|
|
)
|
|
tnew.save()
|
|
|
|
# Nody:
|
|
tnode = TemaVCisleNode(tema = tnew)
|
|
poskladej_strom(apps, tnode, t.text_zadani, t.text_reseni)
|
|
tnode.save()
|
|
|
|
# seminar.migrations.0059_vytvorit_pohadkanode
|
|
|
|
def vytvor_pohadkanode(apps, schema_editor):
|
|
Pohadka = apps.get_model('seminar', 'Pohadka')
|
|
PohadkaNode = apps.get_model('seminar', 'PohadkaNode')
|
|
Text = apps.get_model('seminar', 'Text')
|
|
TextNode = apps.get_model('seminar', 'TextNode')
|
|
|
|
for p in Pohadka.objects.all():
|
|
t = Text.objects.create(na_web = p.text)
|
|
t.save()
|
|
tn = TextNode.objects.create(text = t)
|
|
tn.save()
|
|
pn = PohadkaNode.objects.create(pohadka = p, first_child = tn)
|
|
pn.save()
|
|
|
|
# seminar.migrations.0060_spoj_stromy
|
|
|
|
def pridej_potomka(rodic, potomek):
|
|
# Daný vrchol bude posledním potomkem rodiče
|
|
uz_ma_deti = False
|
|
posledni = None
|
|
|
|
# Přidávaný potomek by neměl mít následovníka -- přidáváme potomka, ne podles.
|
|
if potomek.succ:
|
|
raise ValueError("Potomek má následovníka, to je velmi podezřelé!")
|
|
|
|
# Najdeme aktuálně posledního potomka:
|
|
if rodic.first_child:
|
|
uz_ma_deti = True
|
|
posledni = rodic.first_child
|
|
while posledni.succ:
|
|
posledni = posledni.succ
|
|
|
|
# Nastavíme kořen:
|
|
potomek.root = rodic.root
|
|
potomek.save()
|
|
|
|
# Připojíme vrchol:
|
|
if uz_ma_deti:
|
|
posledni.succ = potomek
|
|
posledni.save()
|
|
else:
|
|
rodic.first_child = potomek
|
|
rodic.save()
|
|
|
|
def pokacej_les(apps, schema_editor):
|
|
# Teď je potřeba všechny TreeNody příslušející k zadaným problémům připojit
|
|
# do hlavního stromu
|
|
# Tohle je jednoduchá verze: nejdřív témátka a seriály, pak úložky a pohádky,
|
|
# pak články a konfery, pak vzoráky, všechno setříděné podle kódu (FIXME?)
|
|
|
|
# Kopírování je častým zdrojem chyb!
|
|
Cislo = apps.get_model('seminar', 'Cislo')
|
|
Tema = apps.get_model('seminar', 'Tema')
|
|
Konfera = apps.get_model('seminar', 'Konfera')
|
|
Clanek = apps.get_model('seminar', 'Clanek')
|
|
Uloha = apps.get_model('seminar', 'Uloha')
|
|
Problem = apps.get_model('seminar', 'Problem')
|
|
Pohadka = apps.get_model('seminar', 'Pohadka')
|
|
|
|
for c in Cislo.objects.all().reverse():
|
|
cnode = c.cislonode
|
|
|
|
# Témata a seriály:
|
|
relevantni_temata = Tema.objects.filter(Q(cislo_zadani_old = c) | Q(cislo_reseni_old = c)).order_by('kod')
|
|
# Téma dáme do prvního čísla, kde se vyskytne
|
|
for t in relevantni_temata:
|
|
tnode = t.temavcislenode
|
|
if t.cislo_zadani_old and t.cislo_reseni_old:
|
|
assert(t.cislo_zadani_old <= t.cislo_reseni_old)
|
|
if t.cislo_reseni_old == c:
|
|
# Už by mělo být přidané do čísla zadání
|
|
continue
|
|
else:
|
|
# Patří sem (buď je to jediné číslo, nebo je to číslo zadání)
|
|
pridej_potomka(cnode, tnode)
|
|
|
|
# Úložky (zadání) a pohádky
|
|
for u in Uloha.objects.filter(cislo_zadani = c).order_by('kod'):
|
|
unode = u.ulohazadaninode
|
|
pohadky_pred = Pohadka.objects.filter(uloha_old = u.problem_ptr, pred = True)
|
|
pohadky_po = Pohadka.objects.filter(uloha_old = u.problem_ptr, pred = False)
|
|
for p in pohadky_pred:
|
|
pnode = p.pohadkanode
|
|
pridej_potomka(cnode, pnode)
|
|
pridej_potomka(cnode, unode)
|
|
for p in pohadky_po:
|
|
pnode = p.pohadkanode
|
|
pridej_potomka(cnode, pnode)
|
|
|
|
# Pohádky, které nejsou u úlohy jsou špatně:
|
|
if Pohadka.objects.exclude(uloha_old__typ='uloha').count():
|
|
raise ValueError("Existuje pohádka, která není u úlohy")
|
|
|
|
# Články
|
|
for cl in Clanek.objects.filter(cislo = c).order_by('kod'):
|
|
clnode = cl.claneknode
|
|
pridej_potomka(cnode, clnode)
|
|
|
|
# Konfery
|
|
for k in Konfera.objects.all():
|
|
knode = k.konferanode
|
|
if k.reseni and knode.root is None:
|
|
# Takováhle konfera nejspíš neexistuje
|
|
raise NotImplementedError("Konfery neumím zapojit do stromu")
|
|
|
|
# Vzoráky
|
|
for u in Uloha.objects.filter(cislo_reseni = c).order_by('kod'):
|
|
unode = u.ulohavzoraknode
|
|
pridej_potomka(cnode, unode)
|
|
|
|
# seminar.migrations.0065_treenode_polymorphic_ctype
|
|
|
|
def vyrob_treenodum_ctypes(apps, schema_editor):
|
|
# Kód zkopírovaný z dokumentace: https://django-polymorphic.readthedocs.io/en/stable/migrating.html
|
|
# XXX: Nevím, jestli se tohle náhodou nemělo spustit na všech childech (jen/i)
|
|
TreeNode = apps.get_model('seminar', 'TreeNode')
|
|
ContentType = apps.get_model('contenttypes', 'ContentType')
|
|
|
|
new_ct = ContentType.objects.get_for_model(TreeNode)
|
|
TreeNode.objects.filter(polymorphic_ctype__isnull=True).update(polymorphic_ctype=new_ct)
|
|
|
|
# seminar.migrations.0066_problem_polymorphic_ctype
|
|
|
|
def vyrob_problemum_ctypes(apps, schema_editor):
|
|
# Kód zkopírovaný z dokumentace: https://django-polymorphic.readthedocs.io/en/stable/migrating.html
|
|
# XXX: Nevím, jestli se tohle náhodou nemělo spustit na všech childech (jen/i)
|
|
Problem = apps.get_model('seminar', 'Problem')
|
|
ContentType = apps.get_model('contenttypes', 'ContentType')
|
|
|
|
new_ct = ContentType.objects.get_for_model(Problem)
|
|
Problem.objects.filter(polymorphic_ctype__isnull=True).update(polymorphic_ctype=new_ct)
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
replaces = [('seminar', '0001_initial'), ('seminar', '0002_add_body_views'), ('seminar', '0003_add_skola_zs_ss'), ('seminar', '0004_add_old_dakos_id'), ('seminar', '0005_alter_problem_autor'), ('seminar', '0006_problem_add_timestamp'), ('seminar', '0007_problem_zamereni'), ('seminar', '0008_reseni_forma'), ('seminar', '0009_rename_imported_IDs'), ('seminar', '0010_alter_rok_maturity'), ('seminar', '0011_alter_timestamp_def'), ('seminar', '0012_remove_soustredeni_ucastnici'), ('seminar', '0013_soustredeni_ucastnici_through_model'), ('seminar', '0014_uprava_poznamek'), ('seminar', '0015_soustredeni_text'), ('seminar', '0016_texty_problemu'), ('seminar', '0017_texty_problemu_minor'), ('seminar', '0018_problemnavrh_problemzadany'), ('seminar', '0019_rocnik_ciselne'), ('seminar', '0020_indexy_a_razeni'), ('seminar', '0021_cislo_verejna_vysledkovka'), ('seminar', '0022_decimal_body'), ('seminar', '0023_add_novinky'), ('seminar', '0024_add_organizator'), ('seminar', '0025_zmena_cesty_nahravani_obrazku'), ('seminar', '0026_soustredeni_typ'), ('seminar', '0027_export_flag_a_typ_akce'), ('seminar', '0028_add_body_celkem_views'), ('seminar', '0029_fix_body_celkem_views'), ('seminar', '0030_add_vysledky'), ('seminar', '0031_cislo_pdf'), ('seminar', '0032_cislo_pdf_blank_typos'), ('seminar', '0033_organizator_studuje_popisek'), ('seminar', '0034_reseni_forma_default_email'), ('seminar', '0035_django_imagekit'), ('seminar', '0036_add_org_to_soustredeni'), ('seminar', '0037_prispevek'), ('seminar', '0038_change_meta_prispevek'), ('seminar', '0039_pohadka'), ('seminar', '0040_pohadka_nepovinny_autor'), ('seminar', '0041_konfery'), ('seminar', '0042_cislo_faze'), ('seminar', '0043_uprava_faze'), ('seminar', '0044_uprava_faze'), ('seminar', '0045_cislo_pridani_faze_nahrano'), ('seminar', '0042_auto_20161005_0847'), ('seminar', '0046_merge'), ('seminar', '0047_auto_20170120_2118'), ('seminar', '0048_add_cislo_datum_deadline_soustredeni'), ('seminar', '0049_auto_20190430_2354'), ('seminar', '0050_auto_20190510_2228'), ('seminar', '0051_resitel_to_osoba'), ('seminar', '0052_user_to_organizator'), ('seminar', '0053_organizator_organizuje_od_do'), ('seminar', '0055_smazat_nemigrovane_zastarale_veci'), ('seminar', '0056_vrcholy_pro_rocniky_a_cisla'), ('seminar', '0057_reseni_to_reseni_hodnoceni'), ('seminar', '0058_problem_to_uloha_tema_clanek'), ('seminar', '0059_vytvorit_pohadkanode'), ('seminar', '0060_spoj_stromy'), ('seminar', '0061_kill_frankenstein'), ('seminar', '0062_redukce_modelu_pohadky'), ('seminar', '0063_procisteni_migraci'), ('seminar', '0064_auto_20190610_2358'), ('seminar', '0065_treenode_polymorphic_ctype'), ('seminar', '0066_problem_polymorphic_ctype'), ('seminar', '0067_auto_20190814_0805')]
|
|
|
|
initial = True
|
|
|
|
dependencies = [
|
|
('contenttypes', '0002_remove_content_type_name'),
|
|
('taggit', '0001_initial'),
|
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
|
]
|
|
|
|
operations = [
|
|
migrations.CreateModel(
|
|
name='VysledkyKCislu',
|
|
fields=[
|
|
('dummy_id', models.CharField(db_column='id', max_length=32, primary_key=True, serialize=False, verbose_name='dummy ID pro view')),
|
|
('body', models.IntegerField(db_column='body', verbose_name='body za číslo')),
|
|
('body_celkem', models.IntegerField(db_column='body_celkem', verbose_name='body celkem do čísla')),
|
|
],
|
|
options={
|
|
'abstract': False,
|
|
'db_table': 'seminar_body_k_cislu',
|
|
'managed': False,
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='VysledkyZaCislo',
|
|
fields=[
|
|
('dummy_id', models.CharField(db_column='id', max_length=32, primary_key=True, serialize=False, verbose_name='dummy ID pro view')),
|
|
('body', models.IntegerField(db_column='body', verbose_name='body za číslo')),
|
|
],
|
|
options={
|
|
'abstract': False,
|
|
'db_table': 'seminar_body_za_cislo',
|
|
'managed': False,
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='Cislo',
|
|
fields=[
|
|
('id', models.AutoField(primary_key=True, serialize=False)),
|
|
('cislo', models.CharField(help_text='Většinou jen "1", vyjímečně "7-8", lexikograficky určije pořadí v ročníku!', max_length=32, verbose_name='název čísla')),
|
|
('datum_vydani', models.DateField(blank=True, help_text='Datum vydání finální verze', null=True, verbose_name='datum vydání')),
|
|
('datum_deadline', models.DateField(blank=True, help_text='Datum pro příjem řešení úloh zadaných v tomto čísle', null=True, verbose_name='datum deadline')),
|
|
('verejne_db', models.BooleanField(db_column='verejne', default=False, verbose_name='číslo zveřejněno')),
|
|
],
|
|
options={
|
|
'ordering': ['rocnik__rocnik', 'cislo'],
|
|
'db_table': 'seminar_cisla',
|
|
'verbose_name': 'Číslo',
|
|
'verbose_name_plural': 'Čísla',
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='Problem',
|
|
fields=[
|
|
('id', models.AutoField(primary_key=True, serialize=False)),
|
|
('nazev', models.CharField(max_length=256, verbose_name='název')),
|
|
('typ', models.CharField(choices=[(b'uloha', 'Úloha'), (b'tema', 'Téma'), (b'serial', 'Seriál'), (b'org-clanek', 'Organizátorský článek'), (b'res-clanek', 'Řesitelský článek')], default=b'uloha', max_length=32, verbose_name='typ problému')),
|
|
('stav', models.CharField(choices=[(b'navrh', 'Návrh'), (b'zadany', 'Zadaný'), (b'smazany', 'Smazaný')], default=b'navrh', max_length=32, verbose_name='stav problému')),
|
|
('text_problemu_org', models.TextField(blank=True, verbose_name='organizátorský (neveřejný) text')),
|
|
('text_problemu', models.TextField(blank=True, verbose_name='veřejný text zadání a řešení')),
|
|
('kod', models.CharField(blank=True, default=b'', help_text='Číslo/kód úlohy v čísle nebo kód tématu/článku/seriálu v ročníku', max_length=32, verbose_name='lokální kód')),
|
|
('body', models.IntegerField(blank=True, null=True, verbose_name='maximum bodů')),
|
|
('autor', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='autor_uloh', to=settings.AUTH_USER_MODEL, verbose_name='autor problému')),
|
|
('cislo_reseni', models.ForeignKey(blank=True, help_text='Číslo s řešením úlohy, jen pro úlohy', null=True, on_delete=django.db.models.deletion.CASCADE, related_name='resene_problemy', to='seminar.Cislo', verbose_name='číslo řešení')),
|
|
('cislo_zadani', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='zadane_problemy', to='seminar.Cislo', verbose_name='číslo zadání')),
|
|
('opravovatel', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='opravovatel_uloh', to=settings.AUTH_USER_MODEL, verbose_name='opravovatel')),
|
|
],
|
|
options={
|
|
'db_table': 'seminar_problemy',
|
|
'verbose_name': 'Problém',
|
|
'verbose_name_plural': 'Problémy',
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='Resitel',
|
|
fields=[
|
|
('id', models.AutoField(primary_key=True, serialize=False)),
|
|
('jmeno', models.CharField(max_length=256, verbose_name='jméno')),
|
|
('prijmeni', models.CharField(max_length=256, verbose_name='příjmení')),
|
|
('pohlavi_muz', models.BooleanField(default=False, verbose_name='pohlaví (muž)')),
|
|
('rok_maturity', models.IntegerField(verbose_name='rok maturity')),
|
|
('email', models.EmailField(blank=True, default=b'', max_length=256, verbose_name='e-mail')),
|
|
('telefon', models.CharField(blank=True, default=b'', max_length=256, verbose_name='telefon')),
|
|
('datum_narozeni', models.DateField(blank=True, null=True, verbose_name='datum narození')),
|
|
('datum_souhlasu_udaje', models.DateField(blank=True, help_text='Datum souhlasu se zpracováním osobních údajů', null=True, verbose_name='datum souhlasu (údaje)')),
|
|
('datum_souhlasu_zasilani', models.DateField(blank=True, help_text='Datum souhlasu se zasíláním MFF materiálů', null=True, verbose_name='datum souhlasu (spam)')),
|
|
('datum_prihlaseni', models.DateField(default=django.utils.timezone.now, verbose_name='datum přihlášení')),
|
|
('zasilat', models.CharField(choices=[(b'domu', 'Domů'), (b'do_skoly', 'Do školy'), (b'nikam', 'Nikam')], default=b'domu', max_length=32, verbose_name='kam zasílat')),
|
|
('ulice', models.CharField(blank=True, default=b'', max_length=256, verbose_name='ulice')),
|
|
('mesto', models.CharField(blank=True, default=b'', max_length=256, verbose_name='město')),
|
|
('psc', models.CharField(blank=True, default=b'', max_length=32, verbose_name='PSČ')),
|
|
('stat', django_countries.fields.CountryField(default=b'CZ', help_text='ISO 3166-1 kód země velkými písmeny (CZ, SK, ...)', max_length=2, verbose_name='stát')),
|
|
('poznamka', models.TextField(blank=True, help_text='Neveřejná poznámka k řešiteli (plain text)', verbose_name='neveřejná poznámka')),
|
|
],
|
|
options={
|
|
'ordering': ['prijmeni', 'jmeno'],
|
|
'db_table': 'seminar_resitele',
|
|
'verbose_name': 'Řešitel',
|
|
'verbose_name_plural': 'Řešitelé',
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='Rocnik',
|
|
fields=[
|
|
('id', models.AutoField(primary_key=True, serialize=False)),
|
|
('prvni_rok', models.IntegerField(verbose_name='první rok')),
|
|
('rocnik', models.CharField(max_length=16, verbose_name='číslo ročníku')),
|
|
],
|
|
options={
|
|
'ordering': ['rocnik'],
|
|
'db_table': 'seminar_rocniky',
|
|
'verbose_name': 'Ročník',
|
|
'verbose_name_plural': 'Ročníky',
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='Skola',
|
|
fields=[
|
|
('id', models.AutoField(primary_key=True, serialize=False)),
|
|
('aesop_id', models.CharField(blank=True, default=b'', help_text='Aesopi ID typu "izo:..." nebo "aesop:..."', max_length=32, verbose_name='Aesop ID')),
|
|
('izo', models.CharField(blank=True, help_text='IZO školy (jen české školy)', max_length=32, verbose_name='IZO')),
|
|
('nazev', models.CharField(help_text='Celý název školy', max_length=256, verbose_name='název')),
|
|
('kratky_nazev', models.CharField(blank=True, help_text=b'Zkr\xc3\xa1cen\xc3\xbd n\xc3\xa1zev pro zobrazen\xc3\xad ve v\xc3\xbdsledkovce', max_length=256, verbose_name='zkrácený název')),
|
|
('ulice', models.CharField(max_length=256, verbose_name='ulice')),
|
|
('mesto', models.CharField(max_length=256, verbose_name='město')),
|
|
('psc', models.CharField(max_length=32, verbose_name='PSČ')),
|
|
('stat', django_countries.fields.CountryField(default=b'CZ', help_text='ISO 3166-1 kód zeme velkými písmeny (CZ, SK, ...)', max_length=2, verbose_name='stát')),
|
|
('poznamka', models.TextField(blank=True, help_text='Neveřejná poznámka ke škole (plain text)', verbose_name='neveřejná poznámka')),
|
|
],
|
|
options={
|
|
'db_table': 'seminar_skoly',
|
|
'verbose_name': 'Škola',
|
|
'verbose_name_plural': 'Školy',
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='Soustredeni',
|
|
fields=[
|
|
('id', models.AutoField(primary_key=True, serialize=False)),
|
|
('datum_zacatku', models.DateField(blank=True, help_text='První den soustředění', null=True, verbose_name='datum začátku')),
|
|
('datum_konce', models.DateField(blank=True, help_text='Poslední den soustředění', null=True, verbose_name='datum konce')),
|
|
('verejne_db', models.BooleanField(db_column='verejne', default=False, verbose_name='soustředění zveřejněno')),
|
|
('misto', models.CharField(blank=True, default=b'', help_text='Místo (název obce, volitelně též objektu', max_length=256, verbose_name='místo soustředění')),
|
|
('rocnik', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='soustredeni', to='seminar.Rocnik', verbose_name='ročník')),
|
|
('ucastnici', models.ManyToManyField(db_table='seminar_soustredeni_ucastnici', help_text='Seznam účastníků soustředění', to='seminar.Resitel', verbose_name='účastníci soustředění')),
|
|
],
|
|
options={
|
|
'ordering': ['rocnik__rocnik', 'datum_zacatku'],
|
|
'db_table': 'seminar_soustredeni',
|
|
'verbose_name': 'Soustředění',
|
|
'verbose_name_plural': 'Soustředění',
|
|
},
|
|
),
|
|
migrations.AddField(
|
|
model_name='resitel',
|
|
name='skola',
|
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='seminar.Skola', verbose_name='škola'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='resitel',
|
|
name='user',
|
|
field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='uživatel'),
|
|
),
|
|
migrations.CreateModel(
|
|
name='Reseni',
|
|
fields=[
|
|
('id', models.AutoField(primary_key=True, serialize=False)),
|
|
('body', models.IntegerField(blank=True, null=True, verbose_name='body')),
|
|
('timestamp', models.DateTimeField(auto_now=True, verbose_name='vytvořeno')),
|
|
('poznamka', models.TextField(blank=True, help_text='Neveřejná poznámka k řešení (plain text)', verbose_name='neveřejná poznámka')),
|
|
('cislo_body', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='bodovana_reseni', to='seminar.Cislo', verbose_name='číslo pro body')),
|
|
('problem', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='reseni', to='seminar.Problem', verbose_name='problém')),
|
|
('resitel', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='reseni', to='seminar.Resitel', verbose_name='řešitel')),
|
|
],
|
|
options={
|
|
'ordering': ['problem', 'resitel'],
|
|
'db_table': 'seminar_reseni',
|
|
'verbose_name': 'Řešení',
|
|
'verbose_name_plural': 'Řešení',
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='PrilohaReseni',
|
|
fields=[
|
|
('id', models.AutoField(primary_key=True, serialize=False)),
|
|
('timestamp', models.DateTimeField(auto_now=True, verbose_name='vytvořeno')),
|
|
('soubor', models.FileField(upload_to=seminar.models.generate_filename, verbose_name='soubor')),
|
|
('poznamka', models.TextField(blank=True, help_text='Neveřejná poznámka k příloze řešení (plain text), např. o původu', verbose_name='neveřejná poznámka')),
|
|
('reseni', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='prilohy', to='seminar.Reseni', verbose_name='řešení')),
|
|
],
|
|
options={
|
|
'ordering': ['reseni', 'timestamp'],
|
|
'db_table': 'seminar_priloha_reseni',
|
|
'verbose_name': 'Příloha řešení',
|
|
'verbose_name_plural': 'Přílohy řešení',
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='Nastaveni',
|
|
fields=[
|
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('aktualni_cislo', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='seminar.Cislo', verbose_name='poslední vydané číslo')),
|
|
('aktualni_rocnik', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='seminar.Rocnik', verbose_name='aktuální ročník')),
|
|
],
|
|
options={
|
|
'db_table': 'seminar_nastaveni',
|
|
'verbose_name': 'Nastavení semináře',
|
|
},
|
|
),
|
|
migrations.AddField(
|
|
model_name='cislo',
|
|
name='rocnik',
|
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='cisla', to='seminar.Rocnik', verbose_name='ročník'),
|
|
),
|
|
migrations.RunSQL(
|
|
sql="
|
|
create view seminar_body_za_cislo as
|
|
select
|
|
sr.cislo_body_id || '-' || sr.resitel_id as id,
|
|
sr.cislo_body_id as cislo_id,
|
|
sr.resitel_id as resitel_id,
|
|
sum(sr.body) as body
|
|
from seminar_reseni as sr
|
|
group by sr.cislo_body_id, sr.resitel_id
|
|
order by body desc;
|
|
|
|
create view seminar_body_k_cislu as
|
|
select
|
|
akt_c.id || '-' || min_bzc.resitel_id as id,
|
|
akt_c.id as cislo_id,
|
|
min_bzc.resitel_id as resitel_id,
|
|
max(akt_bzc.body) as body,
|
|
sum(min_bzc.body) as body_celkem
|
|
from ((seminar_cisla as akt_c
|
|
inner join seminar_cisla as min_c on min_c.rocnik_id = akt_c.rocnik_id and akt_c.cislo >= min_c.cislo)
|
|
inner join seminar_body_za_cislo as min_bzc on min_c.id = min_bzc.cislo_id)
|
|
left outer join seminar_body_za_cislo as akt_bzc on akt_bzc.cislo_id = akt_c.id and akt_bzc.resitel_id = min_bzc.resitel_id
|
|
group by akt_c.id, min_bzc.resitel_id, akt_bzc.resitel_id
|
|
order by body_celkem desc;
|
|
",
|
|
reverse_sql='
|
|
drop view seminar_body_k_cislu;
|
|
drop view seminar_body_za_cislo;
|
|
',
|
|
),
|
|
migrations.AlterField(
|
|
model_name='reseni',
|
|
name='poznamka',
|
|
field=models.TextField(blank=True, help_text='Neveřejná poznámka k řešení (plain text, editace v detailu řešení)', verbose_name='neveřejná poznámka'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='skola',
|
|
name='je_ss',
|
|
field=models.BooleanField(default=True, verbose_name='střední stupeň'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='skola',
|
|
name='je_zs',
|
|
field=models.BooleanField(default=True, verbose_name='základní stupeň'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='problem',
|
|
name='autor',
|
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='autor_uloh', to=settings.AUTH_USER_MODEL, verbose_name='autor problému'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='problem',
|
|
name='zamereni',
|
|
field=taggit.managers.TaggableManager(blank=True, help_text=b'Zam\xc4\x9b\xc5\x99en\xc3\xad M/F/I/O probl\xc3\xa9mu, p\xc5\x99\xc3\xadp. dal\xc5\xa1\xc3\xad tagy', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='zaměření'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='reseni',
|
|
name='forma',
|
|
field=models.CharField(choices=[(b'papir', 'Papírové řešení'), (b'email', 'Emailem'), (b'upload', 'Upload přes web')], default=b'papir', max_length=16, verbose_name='forma řešení'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='resitel',
|
|
name='import_mamoper_id',
|
|
field=models.CharField(blank=True, default=b'', help_text='MAMOPER.MM_RIESITELIA.ID z DAKOS importu, jen historický význam', max_length=32, verbose_name='importované MM_RIESITELIA.ID'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='skola',
|
|
name='import_dakos_id',
|
|
field=models.CharField(blank=True, default=b'', help_text='DKSROOT.V_SKOLA.ID z DAKOS importu, jen historický význam', max_length=32, verbose_name='importované DKSROOT.V_SKOLA.ID'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='resitel',
|
|
name='rok_maturity',
|
|
field=models.IntegerField(blank=True, null=True, verbose_name='rok maturity'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='prilohareseni',
|
|
name='timestamp',
|
|
field=models.DateTimeField(blank=True, default=django.utils.timezone.now, editable=False, verbose_name='vytvořeno'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='problem',
|
|
name='import_dakos_id',
|
|
field=models.CharField(blank=True, default=b'', help_text='ID z importu z DAKOSU s prefixem podle původu: "AZAD:xxx (MAMOPER.MM_AZAD), ""DOZ:xxx" (MAMOPER.MM_DOZ), "ZAD:rocnik.cislo.uloha.typ" (MAMOPER.MM_ZADANIA), "ULOHA:xxx" (MAMOPER.MM_ULOHY)', max_length=32, verbose_name='importované ID s typem'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='problem',
|
|
name='timestamp',
|
|
field=models.DateTimeField(blank=True, default=django.utils.timezone.now, editable=False, verbose_name='vytvořeno'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='reseni',
|
|
name='timestamp',
|
|
field=models.DateTimeField(blank=True, default=django.utils.timezone.now, editable=False, verbose_name='vytvořeno'),
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='soustredeni',
|
|
name='ucastnici',
|
|
),
|
|
migrations.CreateModel(
|
|
name='Soustredeni_Ucastnici',
|
|
fields=[
|
|
('id', models.AutoField(primary_key=True, serialize=False)),
|
|
('poznamka', models.TextField(blank=True, help_text='Neveřejná poznámka k účasti (plain text)', verbose_name='neveřejná poznámka')),
|
|
('resitel', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='seminar.Resitel', verbose_name='řešitel')),
|
|
('soustredeni', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='seminar.Soustredeni', verbose_name='soustředění')),
|
|
],
|
|
options={
|
|
'ordering': ['soustredeni', 'resitel'],
|
|
'db_table': 'seminar_soustredeni_ucastnici',
|
|
'verbose_name': 'Účast na soustředění',
|
|
'verbose_name_plural': 'Účasti na soustředění',
|
|
},
|
|
),
|
|
migrations.AddField(
|
|
model_name='soustredeni',
|
|
name='ucastnici',
|
|
field=models.ManyToManyField(help_text='Seznam účastníků soustředění', through='seminar.Soustredeni_Ucastnici', to='seminar.Resitel', verbose_name='účastníci soustředění'),
|
|
),
|
|
migrations.AlterModelOptions(
|
|
name='problem',
|
|
options={'ordering': ['nazev'], 'verbose_name': 'Problém', 'verbose_name_plural': 'Problémy'},
|
|
),
|
|
migrations.AlterModelOptions(
|
|
name='reseni',
|
|
options={'ordering': ['problem_id', 'resitel_id'], 'verbose_name': 'Řešení', 'verbose_name_plural': 'Řešení'},
|
|
),
|
|
migrations.AlterModelOptions(
|
|
name='skola',
|
|
options={'ordering': ['mesto', 'nazev'], 'verbose_name': 'Škola', 'verbose_name_plural': 'Školy'},
|
|
),
|
|
migrations.AddField(
|
|
model_name='cislo',
|
|
name='poznamka',
|
|
field=models.TextField(blank=True, help_text='Neveřejná poznámka k číslu (plain text)', verbose_name='neveřejná poznámka'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='reseni',
|
|
name='poznamka',
|
|
field=models.TextField(blank=True, help_text='Neveřejná poznámka k řešení (plain text)', verbose_name='neveřejná poznámka'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='soustredeni',
|
|
name='text',
|
|
field=models.TextField(blank=True, default=b'', verbose_name='text k soustředění (HTML)'),
|
|
),
|
|
migrations.RenameField(
|
|
model_name='problem',
|
|
old_name='text_problemu_org',
|
|
new_name='text_org',
|
|
),
|
|
migrations.AlterField(
|
|
model_name='problem',
|
|
name='text_org',
|
|
field=models.TextField(blank=True, verbose_name='neveřejné zadání a organizátorské a poznámky'),
|
|
),
|
|
migrations.RenameField(
|
|
model_name='problem',
|
|
old_name='text_problemu',
|
|
new_name='text_zadani',
|
|
),
|
|
migrations.AlterField(
|
|
model_name='problem',
|
|
name='text_org',
|
|
field=models.TextField(blank=True, help_text='Neveřejný návrh úlohy, návrh řešení, text zadání, poznámky ...', verbose_name='org poznámky (HTML)'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='problem',
|
|
name='text_zadani',
|
|
field=models.TextField(blank=True, help_text='Veřejný text zadání (HTML)', verbose_name='veřejné zadání (HTML)'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='problem',
|
|
name='text_reseni',
|
|
field=models.TextField(blank=True, help_text='Veřejný text řešení (HTML, u témat i příspěvky a komentáře)', verbose_name='veřejné řešení (HTML)'),
|
|
),
|
|
migrations.CreateModel(
|
|
name='ProblemNavrh',
|
|
fields=[
|
|
],
|
|
options={
|
|
'verbose_name': 'Problém (návrh)',
|
|
'proxy': True,
|
|
'verbose_name_plural': 'Problémy (návrhy)',
|
|
},
|
|
bases=('seminar.problem',),
|
|
),
|
|
migrations.CreateModel(
|
|
name='ProblemZadany',
|
|
fields=[
|
|
],
|
|
options={
|
|
'verbose_name': 'Problém (zadaný)',
|
|
'proxy': True,
|
|
'verbose_name_plural': 'Problémy (zadané)',
|
|
},
|
|
bases=('seminar.problem',),
|
|
),
|
|
migrations.AddField(
|
|
model_name='rocnik',
|
|
name='rocnik_n',
|
|
field=models.IntegerField(default=0, verbose_name='číslo ročníku'),
|
|
preserve_default=False,
|
|
),
|
|
migrations.RunSQL(
|
|
sql='update seminar_rocniky set rocnik_n = cast (rocnik as integer)',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='rocnik',
|
|
name='rocnik',
|
|
),
|
|
migrations.RenameField(
|
|
model_name='rocnik',
|
|
old_name='rocnik_n',
|
|
new_name='rocnik',
|
|
),
|
|
migrations.AlterModelOptions(
|
|
name='cislo',
|
|
options={'ordering': ['-rocnik__rocnik', '-cislo'], 'verbose_name': 'Číslo', 'verbose_name_plural': 'Čísla'},
|
|
),
|
|
migrations.AlterModelOptions(
|
|
name='reseni',
|
|
options={'ordering': ['problem_id', 'resitel__prijmeni', 'resitel__jmeno'], 'verbose_name': 'Řešení', 'verbose_name_plural': 'Řešení'},
|
|
),
|
|
migrations.AlterModelOptions(
|
|
name='rocnik',
|
|
options={'ordering': ['-rocnik'], 'verbose_name': 'Ročník', 'verbose_name_plural': 'Ročníky'},
|
|
),
|
|
migrations.AlterField(
|
|
model_name='cislo',
|
|
name='cislo',
|
|
field=models.CharField(db_index=True, help_text='Většinou jen "1", vyjímečně "7-8", lexikograficky určije pořadí v ročníku!', max_length=32, verbose_name='název čísla'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='rocnik',
|
|
name='prvni_rok',
|
|
field=models.IntegerField(db_index=True, unique=True, verbose_name='první rok'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='rocnik',
|
|
name='rocnik',
|
|
field=models.IntegerField(db_index=True, unique=True, verbose_name='číslo ročníku'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='cislo',
|
|
name='verejna_vysledkovka',
|
|
field=models.BooleanField(default=False, help_text='Je-li false u veřejného čísla, není výsledkovka zatím veřejná.', verbose_name='zveřejněna výsledkovka'),
|
|
),
|
|
migrations.RunSQL(
|
|
sql='\ndrop view seminar_body_k_cislu;\ndrop view seminar_body_za_cislo;\n',
|
|
),
|
|
migrations.AlterField(
|
|
model_name='problem',
|
|
name='body',
|
|
field=models.DecimalField(blank=True, decimal_places=1, max_digits=8, null=True, verbose_name='maximum bodů'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='reseni',
|
|
name='body',
|
|
field=models.DecimalField(blank=True, decimal_places=1, max_digits=8, null=True, verbose_name='body'),
|
|
),
|
|
migrations.RunSQL(
|
|
sql="
|
|
create view seminar_body_za_cislo as
|
|
select
|
|
sr.cislo_body_id || '-' || sr.resitel_id as id,
|
|
sr.cislo_body_id as cislo_id,
|
|
sr.resitel_id as resitel_id,
|
|
sum(sr.body) as body
|
|
from seminar_reseni as sr
|
|
group by sr.cislo_body_id, sr.resitel_id
|
|
order by body desc;
|
|
|
|
create view seminar_body_k_cislu as
|
|
select
|
|
akt_c.id || '-' || min_bzc.resitel_id as id,
|
|
akt_c.id as cislo_id,
|
|
min_bzc.resitel_id as resitel_id,
|
|
max(akt_bzc.body) as body,
|
|
sum(min_bzc.body) as body_celkem
|
|
from ((seminar_cisla as akt_c
|
|
inner join seminar_cisla as min_c on min_c.rocnik_id = akt_c.rocnik_id and akt_c.cislo >= min_c.cislo)
|
|
inner join seminar_body_za_cislo as min_bzc on min_c.id = min_bzc.cislo_id)
|
|
left outer join seminar_body_za_cislo as akt_bzc on akt_bzc.cislo_id = akt_c.id and akt_bzc.resitel_id = min_bzc.resitel_id
|
|
group by akt_c.id, min_bzc.resitel_id, akt_bzc.resitel_id
|
|
order by body_celkem desc;
|
|
",
|
|
),
|
|
migrations.CreateModel(
|
|
name='Novinky',
|
|
fields=[
|
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('datum', models.DateField(auto_now_add=True)),
|
|
('text', models.TextField(blank=True, null=True, verbose_name=b'Text novinky')),
|
|
('obrazek', models.ImageField(blank=True, null=True, upload_to=b'image_novinky/%Y/%m/%d/', verbose_name=b'Obr\xc3\xa1zek')),
|
|
('zverejneno', models.BooleanField(default=False, verbose_name=b'Zve\xc5\x99ejn\xc4\x9bno')),
|
|
('autor', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name=b'Autor novinky')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Novinka',
|
|
'verbose_name_plural': 'Novinky',
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='Organizator',
|
|
fields=[
|
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('prezdivka', models.CharField(blank=True, max_length=32, null=True, verbose_name=b'P\xc5\x99ezd\xc3\xadvka')),
|
|
('organizuje_od_roku', models.IntegerField(blank=True, null=True, verbose_name=b'Organizuje od roku')),
|
|
('organizuje_do_roku', models.IntegerField(blank=True, null=True, verbose_name=b'Organizuje do roku')),
|
|
('studuje', models.CharField(blank=True, max_length=256, null=True, verbose_name=b'Studuje')),
|
|
('strucny_popis_organizatora', models.TextField(blank=True, null=True, verbose_name=b'Stru\xc4\x8dn\xc3\xbd popis organiz\xc3\xa1tora')),
|
|
('foto', models.ImageField(blank=True, help_text=b'Vlo\xc5\xbe fotografii organiz\xc3\xa1tora o libovon\xc3\xa9 velikosti', null=True, upload_to=b'image_organizatori/velke/%Y/', verbose_name=b'Fotografie organiz\xc3\xa1tora')),
|
|
('foto_male', models.ImageField(blank=True, editable=False, null=True, upload_to=b'image_organizatori/male/%Y/')),
|
|
('user', models.OneToOneField(help_text=b'Vyber \xc3\xba\xc4\x8det sp\xc5\x99a\xc5\xbeen\xc3\xbd s organiz\xc3\xa1torem.', on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name=b'Osoba')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Organizátor',
|
|
'verbose_name_plural': 'Organizátoři',
|
|
},
|
|
),
|
|
migrations.AddField(
|
|
model_name='rocnik',
|
|
name='exportovat',
|
|
field=models.BooleanField(db_column='exportovat', default=False, help_text='Exportuje se jen podle tohoto flagu (ne veřejnosti), a to jen čísla s veřejnou výsledkovkou', verbose_name='export do AESOPa'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='soustredeni',
|
|
name='exportovat',
|
|
field=models.BooleanField(db_column='exportovat', default=False, help_text='Exportuje se jen podle tohoto flagu (ne veřejnosti)', verbose_name='export do AESOPa'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='soustredeni',
|
|
name='typ',
|
|
field=models.CharField(choices=[(b'jarni', 'Jarní soustředění'), (b'podzimni', 'Podzimní soustředění'), (b'vikend', 'Víkendový sraz')], default=b'podzimni', max_length=16, verbose_name='typ akce'),
|
|
),
|
|
migrations.RunSQL(
|
|
sql="
|
|
drop view seminar_body_k_cislu;
|
|
drop view seminar_body_za_cislo;
|
|
|
|
create view seminar_body_za_cislo as
|
|
select
|
|
seminar_reseni.cislo_body_id || '-' || seminar_reseni.resitel_id as id,
|
|
seminar_reseni.cislo_body_id as cislo_id,
|
|
seminar_reseni.resitel_id as resitel_id,
|
|
seminar_cisla.cislo as cislo,
|
|
seminar_cisla.rocnik_id as rocnik_id,
|
|
seminar_rocniky.rocnik as rocnik,
|
|
seminar_cisla.verejna_vysledkovka as verejna_vysledkovka,
|
|
sum(seminar_reseni.body) as body
|
|
from
|
|
seminar_reseni
|
|
inner join seminar_cisla on seminar_reseni.cislo_body_id = seminar_cisla.id
|
|
inner join seminar_rocniky on seminar_cisla.rocnik_id = seminar_rocniky.id
|
|
group by seminar_reseni.cislo_body_id, seminar_reseni.resitel_id, seminar_cisla.cislo,
|
|
seminar_cisla.rocnik_id, seminar_rocniky.rocnik, seminar_cisla.verejna_vysledkovka
|
|
order by body desc;
|
|
|
|
create view seminar_body_k_cislu_rocnik as
|
|
select
|
|
akt_body.id as id,
|
|
akt_body.cislo_id as cislo_id,
|
|
akt_body.resitel_id as resitel_id,
|
|
akt_body.body as body,
|
|
sum(min_body.body) as body_celkem
|
|
from
|
|
seminar_body_za_cislo as akt_body
|
|
inner join seminar_body_za_cislo as min_body on
|
|
(akt_body.resitel_id = min_body.resitel_id and
|
|
(akt_body.rocnik = min_body.rocnik and akt_body.cislo >= min_body.cislo)
|
|
)
|
|
group by akt_body.id, akt_body.cislo_id, akt_body.resitel_id, akt_body.body
|
|
order by body_celkem desc;
|
|
|
|
create view seminar_body_k_cislu_odjakziva as
|
|
select
|
|
akt_body.id as id,
|
|
akt_body.cislo_id as cislo_id,
|
|
akt_body.resitel_id as resitel_id,
|
|
akt_body.body as body,
|
|
sum(min_body.body) as body_celkem
|
|
from
|
|
seminar_body_za_cislo as akt_body
|
|
inner join seminar_body_za_cislo as min_body on
|
|
(akt_body.resitel_id = min_body.resitel_id and
|
|
((akt_body.rocnik = min_body.rocnik and akt_body.cislo >= min_body.cislo) or
|
|
(akt_body.rocnik < min_body.rocnik)
|
|
)
|
|
)
|
|
group by akt_body.id, akt_body.cislo_id, akt_body.resitel_id, akt_body.body
|
|
order by body_celkem desc;
|
|
|
|
",
|
|
),
|
|
migrations.RunSQL(
|
|
sql="
|
|
drop view seminar_body_k_cislu_rocnik;
|
|
create view seminar_body_k_cislu_rocnik as
|
|
select
|
|
seminar_cisla.id || '-' || min_body.resitel_id as id,
|
|
seminar_cisla.id as cislo_id,
|
|
min_body.resitel_id as resitel_id,
|
|
sum(min_body.body) as body
|
|
from
|
|
seminar_cisla
|
|
inner join seminar_body_za_cislo as min_body on
|
|
(min_body.rocnik_id = seminar_cisla.rocnik_id and seminar_cisla.cislo >= min_body.cislo)
|
|
group by seminar_cisla.id, min_body.resitel_id
|
|
order by body desc;
|
|
|
|
drop view seminar_body_k_cislu_odjakziva;
|
|
create view seminar_body_k_cislu_odjakziva as
|
|
select
|
|
seminar_cisla.id || '-' || min_body.resitel_id as id,
|
|
seminar_cisla.id as cislo_id,
|
|
min_body.resitel_id as resitel_id,
|
|
sum(min_body.body) as body
|
|
from
|
|
seminar_cisla
|
|
inner join seminar_rocniky on
|
|
(seminar_cisla.rocnik_id = seminar_rocniky.id)
|
|
inner join seminar_body_za_cislo as min_body on
|
|
(min_body.rocnik_id = seminar_cisla.rocnik_id and seminar_cisla.cislo >= min_body.cislo) or
|
|
(min_body.rocnik < seminar_rocniky.rocnik)
|
|
group by seminar_cisla.id, min_body.resitel_id
|
|
order by body desc;
|
|
",
|
|
),
|
|
migrations.CreateModel(
|
|
name='VysledkyCelkemKCislu',
|
|
fields=[
|
|
('dummy_id', models.CharField(db_column=b'id', max_length=32, primary_key=True, serialize=False, verbose_name='dummy ID pro view')),
|
|
('body', models.DecimalField(db_column=b'body', decimal_places=1, max_digits=8, verbose_name='body za číslo')),
|
|
('body_celkem', models.DecimalField(db_column=b'body_celkem', decimal_places=1, max_digits=8, verbose_name='body celkem do čísla včetně minulých ročníků')),
|
|
],
|
|
options={
|
|
'abstract': False,
|
|
'db_table': 'seminar_body_celkem_k_cislu',
|
|
'managed': False,
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='VysledkyKCisluOdjakziva',
|
|
fields=[
|
|
('dummy_id', models.CharField(db_column=b'id', max_length=32, primary_key=True, serialize=False, verbose_name='dummy ID pro view')),
|
|
('body', models.DecimalField(db_column=b'body', decimal_places=1, max_digits=8, verbose_name='body za číslo')),
|
|
],
|
|
options={
|
|
'abstract': False,
|
|
'db_table': 'seminar_body_k_cislu_odjakziva',
|
|
'managed': False,
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='VysledkyKCisluZaRocnik',
|
|
fields=[
|
|
('dummy_id', models.CharField(db_column=b'id', max_length=32, primary_key=True, serialize=False, verbose_name='dummy ID pro view')),
|
|
('body', models.DecimalField(db_column=b'body', decimal_places=1, max_digits=8, verbose_name='body za číslo')),
|
|
],
|
|
options={
|
|
'abstract': False,
|
|
'db_table': 'seminar_body_k_cislu_rocnik',
|
|
'managed': False,
|
|
},
|
|
),
|
|
migrations.AlterField(
|
|
model_name='organizator',
|
|
name='foto',
|
|
field=models.ImageField(blank=True, help_text=b'Vlo\xc5\xbe fotografii organiz\xc3\xa1tora o libovoln\xc3\xa9 velikosti', null=True, upload_to=b'image_organizatori/velke/%Y/', verbose_name=b'Fotografie organiz\xc3\xa1tora'),
|
|
),
|
|
migrations.AlterModelOptions(
|
|
name='soustredeni',
|
|
options={'ordering': ['-rocnik__rocnik', '-datum_zacatku'], 'verbose_name': 'Soustředění', 'verbose_name_plural': 'Soustředění'},
|
|
),
|
|
migrations.AlterField(
|
|
model_name='cislo',
|
|
name='cislo',
|
|
field=models.CharField(db_index=True, help_text='Většinou jen "1", vyjímečně "7-8", lexikograficky určuje pořadí v ročníku!', max_length=32, verbose_name='název čísla'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='cislo',
|
|
name='pdf',
|
|
field=models.FileField(blank=True, help_text='Pdf čísla, které si mohou řešitelé stáhnout', null=True, upload_to=seminar.models.cislo_pdf_filename, verbose_name='pdf'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='problem',
|
|
name='typ',
|
|
field=models.CharField(choices=[(b'uloha', 'Úloha'), (b'tema', 'Téma'), (b'serial', 'Seriál'), (b'org-clanek', 'Organizátorský článek'), (b'res-clanek', 'Řešitelský článek')], default=b'uloha', max_length=32, verbose_name='typ problému'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='skola',
|
|
name='stat',
|
|
field=django_countries.fields.CountryField(default=b'CZ', help_text='ISO 3166-1 kód země velkými písmeny (CZ, SK, ...)', max_length=2, verbose_name='stát'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='organizator',
|
|
name='studuje',
|
|
field=models.CharField(blank=True, help_text=b"Nap\xc5\x99. 'Studuje Obecnou fyziku (Bc.), 3. ro\xc4\x8dn\xc3\xadk', 'Vystudovala Diskr\xc3\xa9tn\xc3\xad modely a algoritmy (Mgr.)' nebo 'P\xc5\x99edn\xc3\xa1\xc5\xa1\xc3\xad na MFF'", max_length=256, null=True, verbose_name=b'Studium aj.'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='reseni',
|
|
name='forma',
|
|
field=models.CharField(choices=[(b'papir', 'Papírové řešení'), (b'email', 'Emailem'), (b'upload', 'Upload přes web')], default=b'email', max_length=16, verbose_name='forma řešení'),
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='organizator',
|
|
name='foto_male',
|
|
),
|
|
migrations.AlterField(
|
|
model_name='organizator',
|
|
name='foto',
|
|
field=imagekit.models.fields.ProcessedImageField(blank=True, help_text=b'Vlo\xc5\xbe fotografii organiz\xc3\xa1tora o libovoln\xc3\xa9 velikosti', null=True, upload_to=b'image_organizatori/velke/%Y/', verbose_name=b'Fotografie organiz\xc3\xa1tora'),
|
|
),
|
|
migrations.CreateModel(
|
|
name='Soustredeni_Organizatori',
|
|
fields=[
|
|
('id', models.AutoField(primary_key=True, serialize=False)),
|
|
('poznamka', models.TextField(blank=True, help_text='Neveřejná poznámka k účasti organizátora (plain text)', verbose_name='neveřejná poznámka')),
|
|
('organizator', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='seminar.Organizator', verbose_name='organizátor')),
|
|
('soustredeni', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='seminar.Soustredeni', verbose_name='soustředění')),
|
|
],
|
|
options={
|
|
'ordering': ['soustredeni', 'organizator'],
|
|
'db_table': 'seminar_soustredeni_organizatori',
|
|
'verbose_name': 'Účast organizátorů na soustředění',
|
|
'verbose_name_plural': 'Účasti organizátorů na soustředění',
|
|
},
|
|
),
|
|
migrations.AddField(
|
|
model_name='soustredeni',
|
|
name='organizatori',
|
|
field=models.ManyToManyField(help_text='Seznam organizátorů soustředění', through='seminar.Soustredeni_Organizatori', to='seminar.Organizator', verbose_name='Organizátoři soustředění'),
|
|
),
|
|
migrations.CreateModel(
|
|
name='Prispevek',
|
|
fields=[
|
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('nazev', models.CharField(max_length=200, verbose_name=b'N\xc3\xa1zev')),
|
|
('text_org', models.TextField(blank=True, null=True, verbose_name=b'Orgovsk\xc3\xbd text')),
|
|
('text_resitel', models.TextField(blank=True, null=True, verbose_name=b'\xc5\x98e\xc5\xa1itelsk\xc3\xbd text')),
|
|
('zverejnit', models.BooleanField(verbose_name=b'Zve\xc5\x99ejnit?')),
|
|
('problem', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='seminar.Problem', verbose_name=b'Probl\xc3\xa9m')),
|
|
('reseni', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='seminar.Reseni', verbose_name=b'\xc5\x98e\xc5\xa1en\xc3\xad')),
|
|
],
|
|
options={
|
|
'abstract': False,
|
|
'verbose_name': 'Příspěvek k problému',
|
|
'verbose_name_plural': 'Příspěvky k problémům',
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='Konfera',
|
|
fields=[
|
|
('id', models.AutoField(primary_key=True, serialize=False)),
|
|
('nazev', models.CharField(help_text='Název konfery', max_length=40, verbose_name='název konfery')),
|
|
('popis', models.TextField(blank=True, help_text='Popis konfery k zobrazení na webu', verbose_name='popis konfery')),
|
|
('abstrakt', models.TextField(blank=True, help_text='Abstrakt konfery tak, jak byl uveden ve sborníku', verbose_name='abstrakt')),
|
|
('org_poznamka', models.TextField(blank=True, help_text='Neveřejná poznámka ke konfeře(plain text)', verbose_name='neveřejná poznámka')),
|
|
('typ_prezentace', models.CharField(choices=[(b'veletrh', 'Veletrh (postery)'), (b'prezentace', 'Prezentace (přednáška)')], default=b'veletrh', max_length=16, verbose_name='typ prezentace')),
|
|
('prezentace', models.FileField(help_text='Prezentace nebo fotka posteru', upload_to=seminar.models.generate_filename_konfera, verbose_name='prezentace')),
|
|
('materialy', models.FileField(help_text='Další materiály ke konfeře zabalené do jednoho souboru', upload_to=seminar.models.generate_filename_konfera, verbose_name='materialy')),
|
|
('organizator', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='konfery', to='seminar.Organizator', verbose_name='organizátor')),
|
|
('soustredeni', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='konfery', to='seminar.Soustredeni', verbose_name='soustředění')),
|
|
],
|
|
options={
|
|
'db_table': 'seminar_konfera',
|
|
'verbose_name': 'Konfera',
|
|
'verbose_name_plural': 'Konfery',
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='Konfery_Ucastnici',
|
|
fields=[
|
|
('id', models.AutoField(primary_key=True, serialize=False)),
|
|
('poznamka', models.TextField(blank=True, help_text='Neveřejná poznámka k účasti (plain text)', verbose_name='neveřejná poznámka')),
|
|
('konfera', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='seminar.Konfera', verbose_name='konfera')),
|
|
('resitel', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='seminar.Resitel', verbose_name='řešitel')),
|
|
],
|
|
options={
|
|
'ordering': ['konfera', 'resitel'],
|
|
'db_table': 'seminar_konfery_ucastnici',
|
|
'verbose_name': 'Účast na konfeře',
|
|
'verbose_name_plural': 'Účasti na konfeře',
|
|
},
|
|
),
|
|
migrations.AlterField(
|
|
model_name='problem',
|
|
name='typ',
|
|
field=models.CharField(choices=[(b'uloha', 'Úloha'), (b'tema', 'Téma'), (b'serial', 'Seriál'), (b'konfera', 'Konfera'), (b'org-clanek', 'Organizátorský článek'), (b'res-clanek', 'Řešitelský článek')], default=b'uloha', max_length=32, verbose_name='typ problému'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='konfera',
|
|
name='ucastnici',
|
|
field=models.ManyToManyField(help_text='Seznam účastníků konfery', through='seminar.Konfery_Ucastnici', to='seminar.Resitel', verbose_name='účastníci konfery'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='konfera',
|
|
name='materialy',
|
|
field=models.FileField(blank=True, help_text='Další materiály ke konfeře zabalené do jednoho souboru', upload_to=seminar.models.generate_filename_konfera, verbose_name='materialy'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='konfera',
|
|
name='prezentace',
|
|
field=models.FileField(blank=True, help_text='Prezentace nebo fotka posteru', upload_to=seminar.models.generate_filename_konfera, verbose_name='prezentace'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='konfera',
|
|
name='prispevek',
|
|
field=models.ForeignKey(blank=True, help_text='Účastnický přípěvek o konfeře', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='konfery', to='seminar.Problem', verbose_name='příspěvek do čísla'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='cislo',
|
|
name='faze',
|
|
field=models.CharField(choices=[('admin', 'Úpravy na webu'), ('tex', 'Úpravy v TeXu'), ('nahrano', 'Nahráno na web')], default='admin', help_text='Během fáze "Úpravy na webu" se obsah čísla vytváří (a případně komentuje) ve webovém rozhraní. Během fáze "Úpravy v TeXu" už obsah ve webovém rozhraní editovat nelze a návrhy na úpravy se píší do korekturovátka a zanášejí do gitu. Z něj se pak vygeneruje verze pro web a číslo se přepne do fáze "Nahráno na web", což jen znamená, že už nejde automaticky stáhnout obsah pro založení čísla v TeXu.', max_length=32, verbose_name='Fáze vytváření obsahu'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='cislo',
|
|
name='datum_deadline_soustredeni',
|
|
field=models.DateField(blank=True, help_text='Datum pro příjem řešení pro účast na soustředění', null=True, verbose_name='datum deadline soustředění'),
|
|
),
|
|
migrations.CreateModel(
|
|
name='Osoba',
|
|
fields=[
|
|
('id', models.AutoField(primary_key=True, serialize=False)),
|
|
('jmeno', models.CharField(max_length=256, verbose_name='jméno')),
|
|
('prijmeni', models.CharField(max_length=256, verbose_name='příjmení')),
|
|
('prezdivka', models.CharField(max_length=256, verbose_name='přezdívka')),
|
|
('pohlavi_muz', models.BooleanField(default=False, verbose_name='pohlaví (muž)')),
|
|
('email', models.EmailField(blank=True, default='', max_length=256, verbose_name='e-mail')),
|
|
('telefon', models.CharField(blank=True, default='', max_length=256, verbose_name='telefon')),
|
|
('datum_narozeni', models.DateField(blank=True, null=True, verbose_name='datum narození')),
|
|
('datum_souhlasu_udaje', models.DateField(blank=True, help_text='Datum souhlasu se zpracováním osobních údajů', null=True, verbose_name='datum souhlasu (údaje)')),
|
|
('datum_souhlasu_zasilani', models.DateField(blank=True, help_text='Datum souhlasu se zasíláním MFF materiálů', null=True, verbose_name='datum souhlasu (spam)')),
|
|
('datum_registrace', models.DateField(default=django.utils.timezone.now, verbose_name='datum registrace do semináře')),
|
|
('ulice', models.CharField(blank=True, default='', max_length=256, verbose_name='ulice')),
|
|
('mesto', models.CharField(blank=True, default='', max_length=256, verbose_name='město')),
|
|
('psc', models.CharField(blank=True, default='', max_length=32, verbose_name='PSČ')),
|
|
('stat', django_countries.fields.CountryField(default='CZ', help_text='ISO 3166-1 kód země velkými písmeny (CZ, SK, ...)', max_length=2, verbose_name='stát')),
|
|
('poznamka', models.TextField(blank=True, help_text='Neveřejná poznámka k osobě (plain text)', verbose_name='neveřejná poznámka')),
|
|
('foto', imagekit.models.fields.ProcessedImageField(blank=True, help_text='Vlož fotografii osoby o libovolné velikosti', null=True, upload_to='image_osoby/velke/%Y/', verbose_name='Fotografie osoby')),
|
|
('user', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='uživatel')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Osoba',
|
|
'verbose_name_plural': 'Osoby',
|
|
'db_table': 'seminar_osoby',
|
|
'ordering': ['prijmeni', 'jmeno'],
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='Prijemce',
|
|
fields=[
|
|
('id', models.AutoField(primary_key=True, serialize=False)),
|
|
('poznamka', models.TextField(blank=True, help_text='Neveřejná poznámka k příemci čísel (plain text)', verbose_name='neveřejná poznámka')),
|
|
('osoba', models.ForeignKey(help_text='Které osobě či na jakou adresu se mají zasílat čísla', on_delete=django.db.models.deletion.CASCADE, to='seminar.Osoba', verbose_name='komu')),
|
|
],
|
|
options={
|
|
'verbose_name': 'příjemce',
|
|
'verbose_name_plural': 'příjemce',
|
|
'db_table': 'seminar_prijemce',
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='Text',
|
|
fields=[
|
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('na_web', models.TextField(blank=True, help_text='Text ke zveřejnění na webu', verbose_name='text na web')),
|
|
('do_cisla', models.TextField(blank=True, help_text='Text ke zveřejnění v čísle', verbose_name='text do čísla')),
|
|
],
|
|
options={
|
|
'verbose_name': 'text',
|
|
'verbose_name_plural': 'texty',
|
|
'db_table': 'seminar_texty',
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='Uloha',
|
|
fields=[
|
|
('problem_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='seminar.Problem')),
|
|
('max_body', models.DecimalField(blank=True, decimal_places=1, max_digits=8, null=True, verbose_name='maximum bodů')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Úloha',
|
|
'verbose_name_plural': 'Úlohy',
|
|
'db_table': 'seminar_ulohy',
|
|
},
|
|
bases=('seminar.problem',),
|
|
),
|
|
migrations.AlterModelOptions(
|
|
name='novinky',
|
|
options={'ordering': ['-datum'], 'verbose_name': 'Novinka', 'verbose_name_plural': 'Novinky'},
|
|
),
|
|
migrations.AlterModelOptions(
|
|
name='prilohareseni',
|
|
options={'ordering': ['reseni', 'vytvoreno'], 'verbose_name': 'Příloha řešení', 'verbose_name_plural': 'Přílohy řešení'},
|
|
),
|
|
migrations.AlterModelOptions(
|
|
name='reseni',
|
|
options={'ordering': ['-cas_doruceni'], 'verbose_name': 'Řešení', 'verbose_name_plural': 'Řešení'},
|
|
),
|
|
migrations.AlterModelOptions(
|
|
name='resitel',
|
|
options={'ordering': ['osoba'], 'verbose_name': 'Řešitel', 'verbose_name_plural': 'Řešitelé'},
|
|
),
|
|
migrations.RenameField(
|
|
model_name='konfera',
|
|
old_name='org_poznamka',
|
|
new_name='poznamka',
|
|
),
|
|
migrations.RenameField(
|
|
model_name='reseni',
|
|
old_name='timestamp',
|
|
new_name='cas_doruceni',
|
|
),
|
|
migrations.RenameField(
|
|
model_name='prilohareseni',
|
|
old_name='timestamp',
|
|
new_name='vytvoreno',
|
|
),
|
|
migrations.RenameField(
|
|
model_name='problem',
|
|
old_name='text_org',
|
|
new_name='poznamka',
|
|
),
|
|
migrations.RenameField(
|
|
model_name='problem',
|
|
old_name='timestamp',
|
|
new_name='vytvoreno',
|
|
),
|
|
migrations.RenameField(
|
|
model_name='problem',
|
|
old_name='cislo_zadani',
|
|
new_name='cislo_zadani_old',
|
|
),
|
|
migrations.RenameField(
|
|
model_name='problem',
|
|
old_name='cislo_reseni',
|
|
new_name='cislo_reseni_old',
|
|
),
|
|
migrations.AddField(
|
|
model_name='konfera',
|
|
name='anotace',
|
|
field=models.TextField(blank=True, help_text='Popis, o čem bude konfera.', verbose_name='anotace'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='organizator',
|
|
name='organizuje_do',
|
|
field=models.DateTimeField(blank=True, null=True, verbose_name='Organizuje do'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='organizator',
|
|
name='organizuje_od',
|
|
field=models.DateTimeField(blank=True, null=True, verbose_name='Organizuje od'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='organizator',
|
|
name='skola',
|
|
field=models.CharField(blank=True, help_text='Škola, např. MFF, VŠCHT, VUT, ... prostě aby se nemuselo psát do studuješkolu, ale jen obor, možnost zobrazit zvlášť', max_length=256, null=True, verbose_name='Škola, kterou studuje'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='organizator',
|
|
name='vytvoreno',
|
|
field=models.DateTimeField(blank=True, default=django.utils.timezone.now, editable=False, verbose_name='Vytvořeno'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='problem',
|
|
name='garant',
|
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='garant_problemu_problem', to='seminar.Organizator', verbose_name='garant zadaného problému'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='problem',
|
|
name='nadproblem',
|
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='nadproblem_problem', to='seminar.Problem', verbose_name='nadřazený problém'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='problem',
|
|
name='opravovatele',
|
|
field=models.ManyToManyField(blank=True, related_name='opravovatele_problem', to='seminar.Organizator', verbose_name='opravovatelé'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='reseni',
|
|
name='zverejneno',
|
|
field=models.BooleanField(default=False, help_text='Udává, zda je řešení zveřejněno', verbose_name='řešení zveřejněno'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='cislo',
|
|
name='verejna_vysledkovka',
|
|
field=models.BooleanField(default=False, help_text='Je-li false u veřejného čísla,\t\t\t\t není výsledkovka zatím veřejná.', verbose_name='zveřejněna výsledkovka'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='cislo',
|
|
name='verejne_db',
|
|
field=models.BooleanField(db_column='verejne', default=False, verbose_name='číslo zveřejněno'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='konfera',
|
|
name='typ_prezentace',
|
|
field=models.CharField(choices=[('veletrh', 'Veletrh (postery)'), ('prezentace', 'Prezentace (přednáška)')], default='veletrh', max_length=16, verbose_name='typ prezentace'),
|
|
),
|
|
migrations.RenameField(
|
|
model_name='novinky',
|
|
old_name='autor',
|
|
new_name='autor_old',
|
|
),
|
|
migrations.AddField(
|
|
model_name='novinky',
|
|
name='autor',
|
|
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='seminar.Organizator', verbose_name='Autor novinky'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='novinky',
|
|
name='obrazek',
|
|
field=models.ImageField(blank=True, null=True, upload_to='image_novinky/%Y/%m/%d/', verbose_name='Obrázek'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='novinky',
|
|
name='text',
|
|
field=models.TextField(blank=True, null=True, verbose_name='Text novinky'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='novinky',
|
|
name='zverejneno',
|
|
field=models.BooleanField(default=False, verbose_name='Zveřejněno'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='organizator',
|
|
name='strucny_popis_organizatora',
|
|
field=models.TextField(blank=True, null=True, verbose_name='Stručný popis organizátora'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='organizator',
|
|
name='studuje',
|
|
field=models.CharField(blank=True, help_text="Např. 'Studuje Obecnou fyziku (Bc.), 3. ročník', 'Vystudovala Diskrétní modely a algoritmy (Mgr.)' nebo 'Přednáší na MFF'", max_length=256, null=True, verbose_name='Studium aj.'),
|
|
),
|
|
migrations.CreateModel(
|
|
name='Pohadka',
|
|
fields=[
|
|
('id', models.AutoField(primary_key=True, serialize=False)),
|
|
('text', models.TextField(verbose_name='Text pohádky')),
|
|
('pred', models.BooleanField(default=True, verbose_name='Před úlohou')),
|
|
('vytvoreno', models.DateTimeField(blank=True, default=django.utils.timezone.now, editable=False, verbose_name='Vytvořeno')),
|
|
('autor_old', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name=b'Autor poh\xc3\xa1dky')),
|
|
('uloha_old', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='pohadky', to='seminar.Problem', verbose_name='Úloha')),
|
|
('autor', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='seminar.Organizator', verbose_name='Autor pohádky')),
|
|
('uloha', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='pohadky', to='seminar.Uloha', verbose_name='Úloha')),
|
|
],
|
|
options={
|
|
'ordering': ['uloha__cislo_zadani', 'uloha__kod', '-pred'],
|
|
'db_table': 'seminar_pohadky',
|
|
'verbose_name': 'Pohádka',
|
|
'verbose_name_plural': 'Pohádky',
|
|
},
|
|
),
|
|
migrations.RenameField(
|
|
model_name='problem',
|
|
old_name='autor',
|
|
new_name='autor_old',
|
|
),
|
|
migrations.AddField(
|
|
model_name='problem',
|
|
name='autor',
|
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='autor_problemu_problem', to='seminar.Organizator', verbose_name='autor problému'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='problem',
|
|
name='kod',
|
|
field=models.CharField(blank=True, default='', help_text='Číslo/kód úlohy v čísle nebo kód tématu/článku/seriálu v ročníku', max_length=32, verbose_name='lokální kód'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='problem',
|
|
name='stav',
|
|
field=models.CharField(choices=[('navrh', 'Návrh'), ('zadany', 'Zadaný'), ('vyreseny', 'Vyřešený'), ('smazany', 'Smazaný')], default='navrh', max_length=32, verbose_name='stav problému'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='problem',
|
|
name='zamereni',
|
|
field=taggit.managers.TaggableManager(blank=True, help_text='Zaměření M/F/I/O problému, příp. další tagy', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='zaměření'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='reseni',
|
|
name='forma',
|
|
field=models.CharField(choices=[('papir', 'Papírové řešení'), ('email', 'Emailem'), ('upload', 'Upload přes web')], default='email', max_length=16, verbose_name='forma řešení'),
|
|
),
|
|
migrations.RenameField(
|
|
model_name='reseni',
|
|
old_name='problem',
|
|
new_name='problem_old',
|
|
),
|
|
migrations.AlterField(
|
|
model_name='resitel',
|
|
name='zasilat',
|
|
field=models.CharField(choices=[('domu', 'Domů'), ('do_skoly', 'Do školy'), ('nikam', 'Nikam')], default='domu', max_length=32, verbose_name='kam zasílat'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='rocnik',
|
|
name='exportovat',
|
|
field=models.BooleanField(db_column='exportovat', default=False, help_text='Exportuje se jen podle tohoto flagu (ne veřejnosti), a to jen čísla s veřejnou výsledkovkou', verbose_name='export do AESOPa'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='skola',
|
|
name='aesop_id',
|
|
field=models.CharField(blank=True, default='', help_text='Aesopi ID typu "izo:..." nebo "aesop:..."', max_length=32, verbose_name='Aesop ID'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='skola',
|
|
name='kratky_nazev',
|
|
field=models.CharField(blank=True, help_text='Zkrácený název pro zobrazení ve výsledkovce', max_length=256, verbose_name='zkrácený název'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='skola',
|
|
name='stat',
|
|
field=django_countries.fields.CountryField(default='CZ', help_text='ISO 3166-1 kód země velkými písmeny (CZ, SK, ...)', max_length=2, verbose_name='stát'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='soustredeni',
|
|
name='exportovat',
|
|
field=models.BooleanField(db_column='exportovat', default=False, help_text='Exportuje se jen podle tohoto flagu (ne veřejnosti)', verbose_name='export do AESOPa'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='soustredeni',
|
|
name='misto',
|
|
field=models.CharField(blank=True, default='', help_text='Místo (název obce, volitelně též objektu', max_length=256, verbose_name='místo soustředění'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='soustredeni',
|
|
name='text',
|
|
field=models.TextField(blank=True, default='', verbose_name='text k soustředění (HTML)'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='soustredeni',
|
|
name='typ',
|
|
field=models.CharField(choices=[('jarni', 'Jarní soustředění'), ('podzimni', 'Podzimní soustředění'), ('vikend', 'Víkendový sraz')], default='podzimni', max_length=16, verbose_name='typ akce'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='soustredeni',
|
|
name='verejne_db',
|
|
field=models.BooleanField(db_column='verejne', default=False, verbose_name='soustředění zveřejněno'),
|
|
),
|
|
migrations.AlterModelTable(
|
|
name='problem',
|
|
table='seminar_problemy',
|
|
),
|
|
migrations.AddField(
|
|
model_name='uloha',
|
|
name='cislo_deadline',
|
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='deadlinove_ulohy', to='seminar.Cislo', verbose_name='číslo deadlinu'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='uloha',
|
|
name='cislo_reseni',
|
|
field=models.ForeignKey(blank=True, help_text='Číslo s řešením úlohy, jen pro úlohy', null=True, on_delete=django.db.models.deletion.CASCADE, related_name='resene_ulohy', to='seminar.Cislo', verbose_name='číslo řešení'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='uloha',
|
|
name='cislo_zadani',
|
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='zadane_ulohy', to='seminar.Cislo', verbose_name='číslo zadání'),
|
|
),
|
|
migrations.CreateModel(
|
|
name='Tema',
|
|
fields=[
|
|
('problem_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='seminar.Problem')),
|
|
('tema_typ', models.CharField(choices=[('tema', 'Téma'), ('serial', 'Seriál')], default='tema', max_length=16, verbose_name='Typ tématu')),
|
|
('rocnik', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='seminar.Rocnik', verbose_name='ročník')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Téma',
|
|
'verbose_name_plural': 'Témata',
|
|
'db_table': 'seminar_temata',
|
|
},
|
|
bases=('seminar.problem',),
|
|
),
|
|
migrations.CreateModel(
|
|
name='Reseni_Resitele',
|
|
fields=[
|
|
('id', models.AutoField(primary_key=True, serialize=False)),
|
|
('reseni', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='seminar.Reseni', verbose_name='řešení')),
|
|
('resitele', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='seminar.Resitel', verbose_name='řešitel')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Řešení řešitelů',
|
|
'verbose_name_plural': 'Řešení řešitelů',
|
|
'db_table': 'seminar_reseni_resitele',
|
|
'ordering': ['reseni', 'resitele'],
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='Obrazek',
|
|
fields=[
|
|
('id', models.AutoField(primary_key=True, serialize=False)),
|
|
('na_web', models.ImageField(blank=True, null=True, upload_to='obrazky/%Y/%m/%d/', verbose_name='obrázek na web')),
|
|
('do_cisla_barevny', models.FileField(blank=True, help_text='Barevná verze obrázku do čísla', null=True, upload_to='obrazky/%Y/%m/%d/', verbose_name='barevný obrázek do čísla')),
|
|
('do_cisla_cernobily', models.FileField(blank=True, help_text='Černobílá verze obrázku do čísla', null=True, upload_to='obrazky/%Y/%m/%d/', verbose_name='černobílý obrázek do čísla')),
|
|
('text', models.ForeignKey(help_text='text, ve kterém se obrázek vyskytuje', on_delete=django.db.models.deletion.CASCADE, to='seminar.Text', verbose_name='text')),
|
|
],
|
|
options={
|
|
'verbose_name': 'obrázek',
|
|
'verbose_name_plural': 'obrázky',
|
|
'db_table': 'seminar_obrazky',
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='Hodnoceni',
|
|
fields=[
|
|
('id', models.AutoField(primary_key=True, serialize=False)),
|
|
('body', models.DecimalField(decimal_places=1, max_digits=8, verbose_name='body')),
|
|
('cislo_body', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='hodnoceni', to='seminar.Cislo', verbose_name='číslo pro body')),
|
|
('problem', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='seminar.Problem', verbose_name='problém')),
|
|
('reseni', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='seminar.Reseni', verbose_name='řešení')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Hodnocení',
|
|
'verbose_name_plural': 'Hodnocení',
|
|
'db_table': 'seminar_hodnoceni',
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='Clanek',
|
|
fields=[
|
|
('problem_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='seminar.Problem')),
|
|
('cislo', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='seminar.Cislo', verbose_name='číslo')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Článek',
|
|
'verbose_name_plural': 'Články',
|
|
'db_table': 'seminar_clanky',
|
|
},
|
|
bases=('seminar.problem',),
|
|
),
|
|
migrations.AddField(
|
|
model_name='reseni',
|
|
name='resitele',
|
|
field=models.ManyToManyField(help_text='Seznam autorů řešení', through='seminar.Reseni_Resitele', to='seminar.Resitel', verbose_name='autoři řešení'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='reseni',
|
|
name='text_cely',
|
|
field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='reseni_cely_set', to='seminar.Text', verbose_name='Plná verze textu řešení'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='reseni',
|
|
name='text_zkraceny',
|
|
field=models.ManyToManyField(help_text='Seznam úryvků z řešení', related_name='reseni_zkraceny_set', to='seminar.Text', verbose_name='zkrácené verze řešení'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='skola',
|
|
name='kontaktni_osoba',
|
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='seminar.Osoba', verbose_name='Kontaktní osoba'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='reseni',
|
|
name='problem',
|
|
field=models.ManyToManyField(help_text='Problém', through='seminar.Hodnoceni', to='seminar.Problem', verbose_name='problém'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='konfera',
|
|
name='reseni',
|
|
field=models.OneToOneField(blank=True, help_text='Účastnický přípěvek o konfeře', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='konfery', to='seminar.Reseni', verbose_name='článek ke konfeře'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='organizator',
|
|
name='osoba',
|
|
field=models.OneToOneField(help_text='osobní údaje organizátora', null=True, on_delete=django.db.models.deletion.CASCADE, related_name='org', to='seminar.Osoba', verbose_name='osoba'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='resitel',
|
|
name='osoba',
|
|
field=models.OneToOneField(null=True, on_delete=django.db.models.deletion.CASCADE, to='seminar.Osoba', verbose_name='osoba'),
|
|
),
|
|
migrations.CreateModel(
|
|
name='TreeNode',
|
|
fields=[
|
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('first_child', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='seminar.TreeNode', verbose_name='první potomek')),
|
|
('root', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='potomci_set', to='seminar.TreeNode', verbose_name='kořen stromu')),
|
|
('succ', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='prev', to='seminar.TreeNode', verbose_name='další element na stejné úrovni')),
|
|
],
|
|
options={
|
|
'verbose_name': 'TreeNode',
|
|
'verbose_name_plural': 'TreeNody',
|
|
'db_table': 'seminar_nodes_treenode',
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='CisloNode',
|
|
fields=[
|
|
('treenode_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='seminar.TreeNode')),
|
|
('cislo', models.OneToOneField(on_delete=django.db.models.deletion.PROTECT, to='seminar.Cislo', verbose_name='číslo')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Číslo (Node)',
|
|
'verbose_name_plural': 'Čísla (Node)',
|
|
'db_table': 'seminar_nodes_cislo',
|
|
},
|
|
bases=('seminar.treenode',),
|
|
),
|
|
migrations.CreateModel(
|
|
name='ClanekNode',
|
|
fields=[
|
|
('treenode_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='seminar.TreeNode')),
|
|
('clanek', models.OneToOneField(null=True, on_delete=django.db.models.deletion.PROTECT, to='seminar.Clanek', verbose_name='článek')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Článek (Node)',
|
|
'verbose_name_plural': 'Články (Node)',
|
|
'db_table': 'seminar_nodes_clanek',
|
|
},
|
|
bases=('seminar.treenode',),
|
|
),
|
|
migrations.CreateModel(
|
|
name='KonferaNode',
|
|
fields=[
|
|
('treenode_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='seminar.TreeNode')),
|
|
('konfera', models.OneToOneField(null=True, on_delete=django.db.models.deletion.PROTECT, to='seminar.Konfera', verbose_name='konfera')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Konfera (Node)',
|
|
'verbose_name_plural': 'Konfery (Node)',
|
|
'db_table': 'seminar_nodes_konfera',
|
|
},
|
|
bases=('seminar.treenode',),
|
|
),
|
|
migrations.CreateModel(
|
|
name='MezicisloNode',
|
|
fields=[
|
|
('treenode_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='seminar.TreeNode')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Mezičíslo (Node)',
|
|
'verbose_name_plural': 'Mezičísla (Node)',
|
|
'db_table': 'seminar_nodes_mezicislo',
|
|
},
|
|
bases=('seminar.treenode',),
|
|
),
|
|
migrations.CreateModel(
|
|
name='RocnikNode',
|
|
fields=[
|
|
('treenode_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='seminar.TreeNode')),
|
|
('rocnik', models.OneToOneField(on_delete=django.db.models.deletion.PROTECT, to='seminar.Rocnik', verbose_name='ročník')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Ročník (Node)',
|
|
'verbose_name_plural': 'Ročníky (Node)',
|
|
'db_table': 'seminar_nodes_rocnik',
|
|
},
|
|
bases=('seminar.treenode',),
|
|
),
|
|
migrations.CreateModel(
|
|
name='TemaVCisleNode',
|
|
fields=[
|
|
('treenode_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='seminar.TreeNode')),
|
|
('tema', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='seminar.Tema', verbose_name='téma v čísle')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Téma v čísle (Node)',
|
|
'verbose_name_plural': 'Témata v čísle (Node)',
|
|
'db_table': 'seminar_nodes_temavcisle',
|
|
},
|
|
bases=('seminar.treenode',),
|
|
),
|
|
migrations.CreateModel(
|
|
name='TextNode',
|
|
fields=[
|
|
('treenode_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='seminar.TreeNode')),
|
|
('text', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='seminar.Text', verbose_name='text')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Text (Node)',
|
|
'verbose_name_plural': 'Text (Node)',
|
|
'db_table': 'seminar_nodes_obsah',
|
|
},
|
|
bases=('seminar.treenode',),
|
|
),
|
|
migrations.CreateModel(
|
|
name='UlohaVzorakNode',
|
|
fields=[
|
|
('treenode_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='seminar.TreeNode')),
|
|
('uloha', models.OneToOneField(null=True, on_delete=django.db.models.deletion.PROTECT, to='seminar.Uloha', verbose_name='úloha')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Vzorák úlohy (Node)',
|
|
'verbose_name_plural': 'Vzoráky úloh (Node)',
|
|
'db_table': 'seminar_nodes_uloha_vzorak',
|
|
},
|
|
bases=('seminar.treenode',),
|
|
),
|
|
migrations.CreateModel(
|
|
name='UlohaZadaniNode',
|
|
fields=[
|
|
('treenode_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='seminar.TreeNode')),
|
|
('uloha', models.OneToOneField(null=True, on_delete=django.db.models.deletion.PROTECT, to='seminar.Uloha', verbose_name='úloha')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Zadání úlohy (Node)',
|
|
'verbose_name_plural': 'Zadání úloh (Node)',
|
|
'db_table': 'seminar_nodes_uloha_zadani',
|
|
},
|
|
bases=('seminar.treenode',),
|
|
),
|
|
migrations.CreateModel(
|
|
name='PohadkaNode',
|
|
fields=[
|
|
('treenode_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='seminar.TreeNode')),
|
|
('pohadka', models.OneToOneField(on_delete=django.db.models.deletion.PROTECT, to='seminar.Pohadka', verbose_name='pohádka')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Pohádka (Node)',
|
|
'verbose_name_plural': 'Pohádky (Node)',
|
|
'db_table': 'seminar_nodes_pohadka',
|
|
},
|
|
bases=('seminar.treenode',),
|
|
),
|
|
|
|
# migr 0051
|
|
migrations.RunPython(
|
|
resitel_to_osoba,
|
|
reverse_code=osoba_to_resitel,
|
|
),
|
|
|
|
# migr 0052
|
|
migrations.RunPython(
|
|
spoj_k_organizatorum_osoby,
|
|
),
|
|
migrations.RunPython(
|
|
fix_problem,
|
|
),
|
|
migrations.RunPython(
|
|
fix_pohadka,
|
|
),
|
|
migrations.RunPython(
|
|
fix_novinka,
|
|
),
|
|
|
|
# migr 0053
|
|
migrations.RunPython(
|
|
rok_to_datetime,
|
|
reverse_code=datetime_to_rok,
|
|
),
|
|
|
|
migrations.RemoveField(
|
|
model_name='prispevek',
|
|
name='problem',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='prispevek',
|
|
name='reseni',
|
|
),
|
|
migrations.DeleteModel(
|
|
name='ProblemNavrh',
|
|
),
|
|
migrations.DeleteModel(
|
|
name='ProblemZadany',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='cislo',
|
|
name='faze',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='konfera',
|
|
name='popis',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='konfera',
|
|
name='prispevek',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='problem',
|
|
name='import_dakos_id',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='resitel',
|
|
name='import_mamoper_id',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='skola',
|
|
name='import_dakos_id',
|
|
),
|
|
migrations.DeleteModel(
|
|
name='Prispevek',
|
|
),
|
|
|
|
# migr 0056
|
|
migrations.RunPython(
|
|
generuj_RocnikNody_a_CisloNody,
|
|
),
|
|
|
|
# migr 0057
|
|
migrations.RunPython(
|
|
reseni_to_Reseni,
|
|
),
|
|
|
|
# migr 0058
|
|
migrations.RunPython(
|
|
uloha_to_Uloha,
|
|
),
|
|
migrations.RunPython(
|
|
tema_to_Tema,
|
|
),
|
|
migrations.RunPython(
|
|
clanek_to_Clanek,
|
|
),
|
|
migrations.RunPython(
|
|
konfery_rucne,
|
|
),
|
|
|
|
# migr 0059
|
|
migrations.RunPython(
|
|
vytvor_pohadkanode,
|
|
),
|
|
|
|
# migr 0060
|
|
migrations.RunPython(
|
|
pokacej_les,
|
|
),
|
|
|
|
migrations.RemoveField(
|
|
model_name='novinky',
|
|
name='autor_old',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='organizator',
|
|
name='foto',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='organizator',
|
|
name='organizuje_do_roku',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='organizator',
|
|
name='organizuje_od_roku',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='organizator',
|
|
name='prezdivka',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='organizator',
|
|
name='user',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='pohadka',
|
|
name='autor_old',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='pohadka',
|
|
name='uloha_old',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='problem',
|
|
name='autor_old',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='problem',
|
|
name='body',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='problem',
|
|
name='cislo_reseni_old',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='problem',
|
|
name='cislo_zadani_old',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='problem',
|
|
name='opravovatel',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='problem',
|
|
name='text_reseni',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='problem',
|
|
name='text_zadani',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='problem',
|
|
name='typ',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='reseni',
|
|
name='body',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='reseni',
|
|
name='cislo_body',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='reseni',
|
|
name='problem_old',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='reseni',
|
|
name='resitel',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='resitel',
|
|
name='datum_narozeni',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='resitel',
|
|
name='datum_prihlaseni',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='resitel',
|
|
name='datum_souhlasu_udaje',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='resitel',
|
|
name='datum_souhlasu_zasilani',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='resitel',
|
|
name='email',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='resitel',
|
|
name='jmeno',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='resitel',
|
|
name='mesto',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='resitel',
|
|
name='pohlavi_muz',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='resitel',
|
|
name='prijmeni',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='resitel',
|
|
name='psc',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='resitel',
|
|
name='stat',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='resitel',
|
|
name='telefon',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='resitel',
|
|
name='ulice',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='resitel',
|
|
name='user',
|
|
),
|
|
migrations.AlterModelOptions(
|
|
name='pohadka',
|
|
options={'ordering': ['vytvoreno'], 'verbose_name': 'Pohádka', 'verbose_name_plural': 'Pohádky'},
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='pohadka',
|
|
name='pred',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='pohadka',
|
|
name='text',
|
|
),
|
|
migrations.RemoveField(
|
|
model_name='pohadka',
|
|
name='uloha',
|
|
),
|
|
migrations.AlterField(
|
|
model_name='cislo',
|
|
name='verejna_vysledkovka',
|
|
field=models.BooleanField(default=False, help_text='Je-li false u veřejného čísla, není výsledkovka zatím veřejná.', verbose_name='zveřejněna výsledkovka'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='prijemce',
|
|
name='osoba',
|
|
field=models.OneToOneField(help_text='Které osobě či na jakou adresu se mají zasílat čísla', on_delete=django.db.models.deletion.CASCADE, to='seminar.Osoba', verbose_name='komu'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='reseni',
|
|
name='cas_doruceni',
|
|
field=models.DateTimeField(blank=True, default=django.utils.timezone.now, verbose_name='čas_doručení'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='cislo',
|
|
name='rocnik',
|
|
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='cisla', to='seminar.Rocnik', verbose_name='ročník'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='clanek',
|
|
name='cislo',
|
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='seminar.Cislo', verbose_name='číslo'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='hodnoceni',
|
|
name='cislo_body',
|
|
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='hodnoceni', to='seminar.Cislo', verbose_name='číslo pro body'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='hodnoceni',
|
|
name='problem',
|
|
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='seminar.Problem', verbose_name='problém'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='konfery_ucastnici',
|
|
name='konfera',
|
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='seminar.Konfera', verbose_name='konfera'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='konfery_ucastnici',
|
|
name='resitel',
|
|
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='seminar.Resitel', verbose_name='řešitel'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='nastaveni',
|
|
name='aktualni_cislo',
|
|
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='seminar.Cislo', verbose_name='poslední vydané číslo'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='nastaveni',
|
|
name='aktualni_rocnik',
|
|
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='seminar.Rocnik', verbose_name='aktuální ročník'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='novinky',
|
|
name='autor',
|
|
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='seminar.Organizator', verbose_name='Autor novinky'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='organizator',
|
|
name='osoba',
|
|
field=models.OneToOneField(help_text='osobní údaje organizátora', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='org', to='seminar.Osoba', verbose_name='osoba'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='osoba',
|
|
name='user',
|
|
field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to=settings.AUTH_USER_MODEL, verbose_name='uživatel'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='pohadka',
|
|
name='autor',
|
|
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='seminar.Organizator', verbose_name='Autor pohádky'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='problem',
|
|
name='autor',
|
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='autor_problemu_problem', to='seminar.Organizator', verbose_name='autor problému'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='problem',
|
|
name='garant',
|
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='garant_problemu_problem', to='seminar.Organizator', verbose_name='garant zadaného problému'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='problem',
|
|
name='nadproblem',
|
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='nadproblem_problem', to='seminar.Problem', verbose_name='nadřazený problém'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='reseni',
|
|
name='text_cely',
|
|
field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='reseni_cely_set', to='seminar.Text', verbose_name='Plná verze textu řešení'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='reseni_resitele',
|
|
name='resitele',
|
|
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='seminar.Resitel', verbose_name='řešitel'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='resitel',
|
|
name='osoba',
|
|
field=models.OneToOneField(null=True, on_delete=django.db.models.deletion.SET_NULL, to='seminar.Osoba', verbose_name='osoba'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='resitel',
|
|
name='skola',
|
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='seminar.Skola', verbose_name='škola'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='skola',
|
|
name='kontaktni_osoba',
|
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='seminar.Osoba', verbose_name='Kontaktní osoba'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='soustredeni',
|
|
name='rocnik',
|
|
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='soustredeni', to='seminar.Rocnik', verbose_name='ročník'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='soustredeni_organizatori',
|
|
name='organizator',
|
|
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='seminar.Organizator', verbose_name='organizátor'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='soustredeni_organizatori',
|
|
name='soustredeni',
|
|
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='seminar.Soustredeni', verbose_name='soustředění'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='soustredeni_ucastnici',
|
|
name='resitel',
|
|
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='seminar.Resitel', verbose_name='řešitel'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='soustredeni_ucastnici',
|
|
name='soustredeni',
|
|
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='seminar.Soustredeni', verbose_name='soustředění'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='tema',
|
|
name='rocnik',
|
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='seminar.Rocnik', verbose_name='ročník'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='uloha',
|
|
name='cislo_deadline',
|
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='deadlinove_ulohy', to='seminar.Cislo', verbose_name='číslo deadlinu'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='uloha',
|
|
name='cislo_reseni',
|
|
field=models.ForeignKey(blank=True, help_text='Číslo s řešením úlohy, jen pro úlohy', null=True, on_delete=django.db.models.deletion.PROTECT, related_name='resene_ulohy', to='seminar.Cislo', verbose_name='číslo řešení'),
|
|
),
|
|
migrations.AlterField(
|
|
model_name='uloha',
|
|
name='cislo_zadani',
|
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='zadane_ulohy', to='seminar.Cislo', verbose_name='číslo zadání'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='treenode',
|
|
name='polymorphic_ctype',
|
|
field=models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_seminar.treenode_set+', to='contenttypes.ContentType'),
|
|
),
|
|
migrations.RunPython(
|
|
vyrob_treenodum_ctypes,
|
|
reverse_code=migrations.RunPython.noop,
|
|
),
|
|
migrations.AddField(
|
|
model_name='problem',
|
|
name='polymorphic_ctype',
|
|
field=models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_seminar.problem_set+', to='contenttypes.ContentType'),
|
|
),
|
|
migrations.RunPython(
|
|
vyrob_problemum_ctypes,
|
|
reverse_code=migrations.RunPython.noop,
|
|
),
|
|
migrations.AlterField(
|
|
model_name='konfera',
|
|
name='nazev',
|
|
field=models.CharField(help_text='Název konfery', max_length=100, verbose_name='název konfery'),
|
|
),
|
|
]
|
|
|