# Generated by Django 2.2.24 on 2021-09-10 21:44
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
from odevzdavatko . models import generate_filename
from seminar . models . soustredeni import generate_filename_konfera
from tvorba . models import cislo_pdf_filename , cislo_png_filename
import taggit . managers
from datetime import date
from django . db . models import Q
from treenode . treelib import get_parent
import datetime as dt
import logging
logger = logging . getLogger ( __name__ )
# 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 if r . datum_prihlaseni else date . max # Myslím si, že None by způsobilo použití defaultu
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
o . poznamka + = f ' \n WEB DEBUG: Osoba pro řešitele { r . id } '
if o . user :
u = o . user
if u . first_name :
if not o . jmeno :
o . jmeno = u . first_name
u . first_name + = ' (Uživatel!) '
elif o . jmeno == u . first_name :
u . first_name + = ' (Uživatel!) '
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 + = ' (Uživatel!) '
elif o . prijmeni == u . last_name :
u . last_name + = ' (Uživatel!) '
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
elif o . email != u . email :
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
# Myšlenka: Když najdeme řešitele pro daného uživatele, tak se vezme Osoba příslušná uživateli,
# Pokud nenajdeme uživatele, tak ještě zkusíme dohledat Osobu podle e-mailu
user = org . user
if user is None :
logger . error ( f ' Org { org } nemá uživatele! ' )
# Je to podezřelé, ale prostě vyrobíme novou osobu.
osoba = Osoba ( )
osoba . poznamka + = f ' \n WEB DEBUG: BUG: Osoba pro Orga { org . id } bez Uživatele '
# Téhle osobě nejdou nastavit detaily, protože žádné nemáme.
# Datum registrace budiž maximální
osoba . datum_registrace = date . max
else :
logger . info ( f ' Org { org . user . email } (ID: { org . id } ) má uživatele { user } ' )
# 💢💢💢 Python nemá goto, ale prý má výjimky… 💢💢💢
class EndException ( Exception ) : pass
try :
# Hledáme podle uživatele
resitele = Resitel . objects . filter ( user = user )
if resitele . count ( ) != 0 and user is not None :
osoba = resitele . first ( ) . osoba
osoba . poznamka + = f ' \n WEB DEBUG: Osoba pro Orga { org . id } spárovaná podle Uživatele Řešitele '
logger . info ( f ' Našel jsem řešitele { resitele . first ( ) . email } podle uživatele, používám jeho Osobu ' )
raise EndException
# Hledáme podle e-mailu
osoby = Osoba . objects . filter ( email__iexact = user . email )
if osoby . count ( ) != 0 and user . email != ' ' :
osoba = osoby . first ( )
if osoba . user is None :
osoba . user = user
osoba . poznamka + = f ' \n WEB DEBUG: Osoba pro Orga { org . id } spárovaná podle e-mailu '
logger . info ( f ' Našel jsem Osobu { osoby . first ( ) . email } podle e-mailu ' )
raise EndException
# Fallback
logger . warning ( f ' Org neměl řešitele, zakládám novou Osobu. ' )
osoba = Osoba ( user = user )
osoba . poznamka + = f ' \n WEB DEBUG: Osoba pro Orga { org . id } vytvořena nová jen podle existence Uživatele '
# Přesun informací z usera do osoby
# pro osoby z řešitelů (jediné dosud existující osoby) již v minule migraci
osoba . jmeno = user . first_name
osoba . prijmeni = user . last_name
osoba . email = user . email
user . first_name + = " (Uživatel!) "
user . last_name + = " (Uživatel!) "
osoba . datum_registrace = min ( osoba . datum_registrace , user . date_joined , key = lambda d : d if d is not None else date . max )
user . save ( )
except EndException : pass
# 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_0052 ( 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 :
if Organizator . objects . filter ( osoba__user = pr . opravovatel ) . first ( ) is not None :
pr . opravovatele . add ( Organizator . objects . filter ( osoba__user = pr . opravovatel ) . first ( ) )
else :
logger . error ( f ' WTF, nespárovaný opravovatel { pr . opravovatel } problému { pr } ' )
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 (
# Zakomentované fieldy by se už měly nacházet v příslušném problému
problem_ptr = uold ,
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 ,
)
uold . save ( ) # DULEZITE!!! Jinak Uloha.objects.create() přepíše všechny atributy Problému
unew . opravovatele . add ( * uold . opravovatele . all ( ) )
# 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 ' )
ReseniNode = apps . get_model ( ' seminar ' , ' ReseniNode ' )
Text = apps . get_model ( ' seminar ' , ' Text ' )
TextNode = apps . get_model ( ' seminar ' , ' TextNode ' )
# XXX: Org-clanky neexistuji, tak je migrace ani nepodporuje.
clanky = Problem . objects . filter ( 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í
)
cl . save ( ) # DULEZITE!!! Jinak Clanek.objects.create() přepíše všechny atributy Problému
def Clanek_Treenody ( apps , schema_editor ) :
Problem = apps . get_model ( ' seminar ' , ' Problem ' )
Clanek = apps . get_model ( ' seminar ' , ' Clanek ' )
ReseniNode = apps . get_model ( ' seminar ' , ' ReseniNode ' )
Text = apps . get_model ( ' seminar ' , ' Text ' )
TextNode = apps . get_model ( ' seminar ' , ' TextNode ' )
for cl in Clanek . objects . all ( ) :
# Vyrobíme nody:
# Clanek nema vlastni node, ma (prave jedno) Reseni a to ma text_cely -- ReseniNode
reseni = cl . reseni_set . all ( )
if len ( reseni ) != 1 :
raise ValueError ( f ' Clanek { cl . id } ma vic reseni { len ( reseni ) } ( { reseni } ) ' )
reseni = reseni [ 0 ]
resnode = ReseniNode ( reseni = reseni )
poskladej_strom ( apps , resnode , cl . text_zadani , cl . text_reseni )
resnode . save ( )
reseni . text_cely = resnode
reseni . save ( )
def fix_Clanek_Reseni ( apps , schema_editor ) :
Problem = apps . get_model ( ' seminar ' , ' Problem ' )
Clanek = apps . get_model ( ' seminar ' , ' Clanek ' )
Reseni = apps . get_model ( ' seminar ' , ' Reseni ' )
Hodnoceni = apps . get_model ( ' seminar ' , ' Hodnoceni ' )
Resitel = apps . get_model ( ' seminar ' , ' Resitel ' )
# Je potreba zajistit, ze clanky budou mit jen jedno reseni -- z pohledu
# modelu nic jineho nedava smysl. Ve stavajicim modelu ale naopak nelze
# reprezentovat vice resitelu jednoho clanku (coz je ale bezne -- clanky z
# konfer) Musime tedy opravit, aby misto nekolika reseni kazdeho resitele
# samostatne zustalo jen jedno reseni, spravne obodovane a s vice resiteli
# jako autory
for cl in Clanek . objects . all ( ) :
rr = cl . reseni_set . all ( )
if len ( rr ) == 1 : continue
# Vice nez jedno reseni, jdeme je sjednotit.
resitele = [ ]
vzor_hodnoceni = rr [ 0 ] . hodnoceni_set . first ( )
ostatni_hodnoceni = [ ]
for r in rr :
# Overime, ze nemame kolizi v datech:
h = r . hodnoceni_set . first ( )
if h . cislo_body != vzor_hodnoceni . cislo_body or h . body != vzor_hodnoceni . body :
raise ValueError ( f ' Clanek { cl . id } ma vice nekonzistentnich reseni ' )
if h . id != vzor_hodnoceni . id :
ostatni_hodnoceni . append ( h )
resitele . extend ( r . resitele . all ( ) )
rr [ 0 ] . resitele . set ( resitele )
rr [ 0 ] . save ( )
vzor_hodnoceni . save ( )
# Ted mame spravne databazi, jeste potrebujeme z databaze smazat po novu nepouzita hodnoceni
for h in ostatni_hodnoceni :
h . reseni . delete ( )
h . delete ( )
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 ,
)
t . save ( ) # DULEZITE!!! Jinak Tema.objects.create() přepíše všechny atributy Problému
# 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 nastav_koren ( koren , node ) :
node . root = koren
node . save ( )
if node . succ :
nastav_koren ( koren , node . succ )
if node . first_child :
nastav_koren ( koren , node . first_child )
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:
nastav_koren ( rodic . root , potomek )
# 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 :
tnodes = t . temavcislenode_set . all ( )
# Migrujeme, TvCN je jen jedno dohromady
assert ( len ( tnodes ) == 1 )
tnode = tnodes [ 0 ]
# Zkontrolujeme a preskocime cislo_reseni
if t . cislo_zadani_old and t . cislo_reseni_old :
assert ( t . cislo_zadani_old . rocnik == t . cislo_reseni_old . rocnik
and t . cislo_zadani_old . cislo < = t . cislo_reseni_old . cislo )
if t . cislo_reseni_old == c :
# Už by mělo být přidané do čísla zadání
continue
# 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 ' ) :
# Zmena: Clanky nemaji vlastni Node, ale pouziva se ReseniNode v text_cely
reseni = cl . reseni_set . all ( )
if len ( reseni ) != 1 :
raise ValueError ( ' Clanek ma vic reseni ' )
resnode = reseni [ 0 ] . text_cely
pridej_potomka ( cnode , resnode )
# 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.0068_treenode_nazev
def fix_RocnikNode_names ( apps , schema_editor ) :
Objects = apps . get_model ( ' seminar ' , ' RocnikNode ' )
for obj in Objects . objects . all ( ) :
obj . nazev = str ( obj . rocnik ) + " (RocnikNode) "
obj . save ( )
def fix_CisloNode_names ( apps , schema_editor ) :
Objects = apps . get_model ( ' seminar ' , ' CisloNode ' )
for obj in Objects . objects . all ( ) :
obj . nazev = str ( obj . cislo ) + " (CisloNode) "
obj . save ( )
def fix_MezicisloNode_names ( apps , schema_editor ) :
Objects = apps . get_model ( ' seminar ' , ' MezicisloNode ' )
for obj in Objects . objects . all ( ) :
if obj . prev :
if ( obj . prev . get_real_instance_class ( ) != CisloNode and
obj . prev . get_real_instance_class ( ) != MezicisloNode ) :
raise ValueError ( " Předchůdce není číslo! " )
posledni = obj . prev . cislo
obj . nazev = " Mezičíslo po čísle " + str ( posledni ) + " (MezicisloNode) "
elif obj . root :
if obj . root . get_real_instance_class ( ) != RocnikNode :
raise ValueError ( " Kořen stromu není ročník! " )
rocnik = obj . root . rocnik
obj . nazev = " První mezičíslo ročníku " + " (MezicisloNode) "
else :
print ( " !!!!! Nějaké neidentifikované mezičíslo !!!!! " )
obj . nazev = " Neidentifikovatelné mezičíslo! (MezicisloNode) "
obj . save ( )
def fix_TemaVCisleNode_names ( apps , schema_editor ) :
Objects = apps . get_model ( ' seminar ' , ' TemaVCisleNode ' )
for obj in Objects . objects . all ( ) :
obj . nazev = str ( obj . tema ) + " (TemaVCisleNode) "
obj . save ( )
def fix_KonferaNode_names ( apps , schema_editor ) :
Objects = apps . get_model ( ' seminar ' , ' KonferaNode ' )
for obj in Objects . objects . all ( ) :
obj . nazev = str ( obj . konfera ) + " (KonferaNode) "
obj . save ( )
def fix_ClanekNode_names ( apps , schema_editor ) :
Objects = apps . get_model ( ' seminar ' , ' ClanekNode ' )
for obj in Objects . objects . all ( ) :
obj . nazev = str ( obj . clanek ) + " (ClanekNode) "
obj . save ( )
def fix_UlohaZadaniNode_names ( apps , schema_editor ) :
Objects = apps . get_model ( ' seminar ' , ' UlohaZadaniNode ' )
for obj in Objects . objects . all ( ) :
obj . nazev = str ( obj . uloha ) + " (UlohaZadaniNode) "
obj . save ( )
def fix_PohadkaNode_names ( apps , schema_editor ) :
Objects = apps . get_model ( ' seminar ' , ' PohadkaNode ' )
for obj in Objects . objects . all ( ) :
obj . nazev = str ( obj . pohadka ) + " (PohadkaNode) "
obj . save ( )
def fix_UlohaVzorakNode_names ( apps , schema_editor ) :
Objects = apps . get_model ( ' seminar ' , ' UlohaVzorakNode ' )
for obj in Objects . objects . all ( ) :
obj . nazev = str ( obj . uloha ) + " (UlohaVzorakNode) "
obj . save ( )
def fix_TextNode_names ( apps , schema_editor ) :
Objects = apps . get_model ( ' seminar ' , ' TextNode ' )
for obj in Objects . objects . all ( ) :
obj . nazev = str ( obj . text ) + " (TextNode) "
obj . save ( )
def fix_all_names ( apps , schema_editor ) :
fix_RocnikNode_names ( apps , schema_editor )
fix_CisloNode_names ( apps , schema_editor )
fix_MezicisloNode_names ( apps , schema_editor )
fix_TemaVCisleNode_names ( apps , schema_editor )
fix_KonferaNode_names ( apps , schema_editor )
fix_ClanekNode_names ( apps , schema_editor )
fix_UlohaZadaniNode_names ( apps , schema_editor )
fix_PohadkaNode_names ( apps , schema_editor )
fix_UlohaVzorakNode_names ( apps , schema_editor )
fix_TextNode_names ( apps , schema_editor )
# seminar.migrations.0073_copy_osoba_email_to_user_email
def copy_mails ( apps , schema_editor ) :
Osoba = apps . get_model ( ' seminar ' , ' Osoba ' )
for o in Osoba . objects . all ( ) :
if o . user is not None :
u = o . user
u . email = o . email
u . save ( )
# seminar.migrations.0084_clanek_cislo
def najdi_cislo ( apps , schema_editor ) :
Clanek = apps . get_model ( ' seminar ' , ' Clanek ' )
Hodnoceni = apps . get_model ( ' seminar ' , ' Hodnoceni ' )
Reseni = apps . get_model ( ' seminar ' , ' Reseni ' )
ReseniNode = apps . get_model ( ' seminar ' , ' ReseniNode ' )
CisloNode = apps . get_model ( ' seminar ' , ' CisloNode ' )
ContentType = apps . get_model ( ' contenttypes ' , ' ContentType ' )
for c in Clanek . objects . all ( ) :
reseni = c . reseni_set
if ( reseni . count ( ) != 1 ) : # Pozor, reseni_set je Manager, takže se na něj musí trošku jinak
logger . warn ( f " Více než jedno řešení pro článek { c } " )
c . cislo = None
c . save ( )
continue
r = reseni . first ( )
aktualniNode = r . text_cely # Hlavní ReseniNode pro řešení
while aktualniNode is not None :
#if isinstance(aktualniNode, CisloNode): # Nejde, protože aktualniNode se tváří jako obecný TreeNode...
# Ale v dokumentaci k django-polymorphic se píše, že tam jsou nastavené nějaké fieldy na známé hodnoty :-)
# https://django-polymorphic.readthedocs.io/en/stable/migrating.html
cislonode_ct = ContentType . objects . get_for_model ( CisloNode )
akt_ct = aktualniNode . polymorphic_ctype
if akt_ct == cislonode_ct :
# Zneužíváme tu opačnou vazbu k treenode_ptr, protože
# aktualniNode je "jen" TreeNode a ne CisloNode
c . cislo = aktualniNode . cislonode . cislo
c . save ( )
break
aktualniNode = get_parent ( aktualniNode )
# seminar.migrations.0087_fix_polymorphism
# Pomocná funkce -- děláme to samé pro obě polymorfní hierarchie
def fix_ctypes ( parent : str , children , apps , schema_editor ) :
Parent = apps . get_model ( ' seminar ' , parent )
ContentType = apps . get_model ( ' contenttypes ' , ' ContentType ' )
# Nejdřív všechno smažeme:
Parent . objects . update ( polymorphic_ctype = None )
# Opravíme děti
for clsname in children :
Model = apps . get_model ( ' seminar ' , clsname )
ct = ContentType . objects . get_for_model ( Model )
Model . objects . update ( polymorphic_ctype = ct )
# Ostatní instance mají mít explicitně content type pro rodiče
new_ct = ContentType . objects . get_for_model ( Parent )
for obj in Parent . objects . filter ( polymorphic_ctype__isnull = True ) :
# Po úpravě pořadí migrací se tohle stane pro každý problém. Není to správně, ale warning moc otravuje…
logger . info ( f " { parent } \" { obj } \" neměl content type -- nejspíš to je instance přímo { parent } ! " )
obj . polymorphic_ctype = new_ct
obj . save ( )
def fix_treenode ( apps , schema_editor ) :
children = [ ' RocnikNode ' , ' CisloNode ' , ' MezicisloNode ' , ' TemaVCisleNode ' ,
' OrgTextNode ' , ' UlohaZadaniNode ' , ' UlohaVzorakNode ' , ' PohadkaNode ' ,
' TextNode ' , ' CastNode ' , ' ReseniNode ' ]
fix_ctypes ( " TreeNode " , children , apps , schema_editor )
def fix_problem_0087 ( apps , schema_editor ) :
children = [ ' Tema ' , ' Clanek ' , ' Uloha ' ] # FIXME: Konfera z nějakého důvodu tenhle field vůbec nemá, asi je to špatně.
fix_ctypes ( " Problem " , children , apps , schema_editor )
# seminar.migrations.0088_perm_org_a_ucastnik
def add_perms ( apps , schema_editor ) :
ContentType = apps . get_model ( ' contenttypes ' , ' ContentType ' )
User = apps . get_model ( ' auth ' , ' User ' )
Permission = apps . get_model ( ' auth ' , ' Permission ' )
Resitel = apps . get_model ( ' seminar ' , ' Resitel ' )
c = ContentType . objects . get_for_model ( User )
org_perm = Permission . objects . filter ( codename__exact = ' org ' ) . first ( )
if not org_perm :
org_perm = Permission . objects . create ( codename = ' org ' , name = ' org ' , content_type = c )
resitel_perm = Permission . objects . filter ( codename__exact = ' resitel ' ) . first ( )
if not resitel_perm :
resitel_perm = Permission . objects . create ( codename = ' resitel ' , name = ' resitel ' , content_type = c )
for r in Resitel . objects . all ( ) :
u = r . osoba . user
if u :
u . user_permissions . add ( resitel_perm )
for org in User . objects . all ( ) :
if org and org . is_staff :
org . user_permissions . add ( org_perm )
org . user_permissions . remove ( resitel_perm )
# seminar.migrations.0095_fix_polymorphism
def fix_all ( apps , schema_editor ) :
ContentType = apps . get_model ( ' contenttypes ' , ' ContentType ' )
for modelname in [
# Problémy:
' Tema ' , ' Uloha ' , ' Clanek ' ,
# Konfery neexistuji, takze ani neni co nastavovat...
# TreeNody:
' RocnikNode ' , ' CisloNode ' , ' MezicisloNode ' , ' TemaVCisleNode ' , ' OrgTextNode ' , ' UlohaZadaniNode ' , ' PohadkaNode ' , ' UlohaVzorakNode ' , ' TextNode ' , ' CastNode ' , ' ReseniNode ' ,
] :
Model = apps . get_model ( ' seminar ' , modelname )
ct = ContentType . objects . get_for_model ( Model )
Model . objects . update ( polymorphic_ctype = ct )
# seminar.migrations.0096_fix_zamereni
def fix_zamereni ( apps , schema_editor ) :
ContentType = apps . get_model ( ' contenttypes ' , ' ContentType ' )
Problem = apps . get_model ( ' seminar ' , ' Problem ' )
ProblemCT = ContentType . objects . get_for_model ( Problem )
TaggedItem = apps . get_model ( ' taggit ' , ' TaggedItem ' )
typy_problemu = [
' Clanek ' ,
' Tema ' ,
' Uloha ' ,
' Konfera ' ,
]
for typ in typy_problemu :
Model = apps . get_model ( ' seminar ' , typ )
ModelCT = ContentType . objects . get_for_model ( Model )
# Neumím jednoduše zjistit, které objekty jsou které, tak je prostě procyklím
for obj in Model . objects . all ( ) :
TaggedItem . objects . filter ( object_id = obj . problem_ptr . id , content_type = ProblemCT ) . update ( content_type = ModelCT )
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 ' , ' 0066c_reseninode ' ) , ( ' 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 ' , ' 0065_treenode_polymorphic_ctype ' ) , ( ' seminar ' , ' 0066_problem_polymorphic_ctype ' ) , ( ' seminar ' , ' 0066b_orgtextnode ' ) , ( ' seminar ' , ' 0077_auto_20200318_2146 ' ) , ( ' seminar ' , ' 0087_fix_polymorphism ' ) , ( ' seminar ' , ' 0058_problem_to_uloha_tema_clanek ' ) , ( ' seminar ' , ' fix_0058 ' ) , ( ' 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 ' , ' 0067_auto_20190814_0805 ' ) , ( ' seminar ' , ' 0068_treenode_nazev ' ) , ( ' seminar ' , ' 0069_auto_20191120_2115 ' ) , ( ' seminar ' , ' 0070_auto_20191120_2357 ' ) , ( ' seminar ' , ' 0071_remove_nastaveni_aktualni_rocnik ' ) , ( ' seminar ' , ' 0072_auto_20191204_2257 ' ) , ( ' seminar ' , ' 0073_copy_osoba_email_to_user_email ' ) , ( ' seminar ' , ' 0074_auto_20200228_1401 ' ) , ( ' seminar ' , ' 0075_auto_20200228_2010 ' ) , ( ' seminar ' , ' 0076_auto_20200228_2013 ' ) , ( ' seminar ' , ' 0079_clanek_resitelsky ' ) , ( ' seminar ' , ' 0080_zruseni_claneknode_a_konferanode ' ) , ( ' seminar ' , ' 0081_auto_20200408_2221 ' ) , ( ' seminar ' , ' 0082_auto_20200506_1951 ' ) , ( ' seminar ' , ' 0083_auto_20200506_1952 ' ) , ( ' seminar ' , ' 0084_clanek_cislo ' ) , ( ' seminar ' , ' 0086_auto_20200819_0959 ' ) , ( ' seminar ' , ' 0088_perm_org_a_ucastnik ' ) , ( ' seminar ' , ' 0089_cislo_datum_preddeadline ' ) , ( ' seminar ' , ' 0090_auto_20201110_1958 ' ) , ( ' seminar ' , ' 0091_resitel_zasilat_cislo_emailem ' ) , ( ' seminar ' , ' 0092_auto_20210309_2049 ' ) , ( ' seminar ' , ' 0093_auto_20210330_2105 ' ) , ( ' seminar ' , ' 0094_auto_20210701_0149 ' ) , ( ' seminar ' , ' 0095_fix_polymorphism ' ) , ( ' seminar ' , ' 0096_fix_zamereni ' ) , ( ' seminar ' , ' 0097_auto_20210903_0112 ' ) , ( ' seminar ' , ' 0098_auto_20210906_0305 ' ) ]
initial = True
dependencies = [
migrations . swappable_dependency ( settings . AUTH_USER_MODEL ) ,
( ' contenttypes ' , ' 0002_remove_content_type_name ' ) ,
( ' taggit ' , ' 0001_initial ' ) ,
( ' taggit ' , ' 0003_taggeditem_add_unique_index ' ) ,
]
operations = [
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 \xa1 cen \xc3 \xbd n \xc3 \xa1 zev pro zobrazen \xc3 \xad ve v \xc3 \xbd sledkovce ' , 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 = 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 . 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 \x99 en \xc3 \xad M/F/I/O probl \xc3 \xa9 mu, p \xc5 \x99 \xc3 \xad p. 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) ' ,
reverse_sql = ' update seminar_rocniky set rocnik_n = cast (rocnik as nvarchar(16)) ' ,
) ,
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 . 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 . 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 \xa1 zek ' ) ) ,
( ' zverejneno ' , models . BooleanField ( default = False , verbose_name = b ' Zve \xc5 \x99 ejn \xc4 \x9b no ' ) ) ,
( ' 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 \x99 ezd \xc3 \xad vka ' ) ) ,
( ' 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 \x8d n \xc3 \xbd popis organiz \xc3 \xa1 tora ' ) ) ,
( ' foto ' , models . ImageField ( blank = True , help_text = b ' Vlo \xc5 \xbe fotografii organiz \xc3 \xa1 tora o libovon \xc3 \xa9 velikosti ' , null = True , upload_to = b ' image_organizatori/velke/ % Y/ ' , verbose_name = b ' Fotografie organiz \xc3 \xa1 tora ' ) ) ,
( ' 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 \x8d et sp \xc5 \x99 a \xc5 \xbe en \xc3 \xbd s organiz \xc3 \xa1 torem. ' , 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 . AlterField (
model_name = ' organizator ' ,
name = ' foto ' ,
field = models . ImageField ( blank = True , help_text = b ' Vlo \xc5 \xbe fotografii organiz \xc3 \xa1 tora o libovoln \xc3 \xa9 velikosti ' , null = True , upload_to = b ' image_organizatori/velke/ % Y/ ' , verbose_name = b ' Fotografie organiz \xc3 \xa1 tora ' ) ,
) ,
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 = 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 \x8d n \xc3 \xad k ' , ' Vystudovala Diskr \xc3 \xa9 tn \xc3 \xad modely a algoritmy (Mgr.) ' nebo ' P \xc5 \x99 edn \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 \xa1 tora o libovoln \xc3 \xa9 velikosti ' , null = True , upload_to = b ' image_organizatori/velke/ % Y/ ' , verbose_name = b ' Fotografie organiz \xc3 \xa1 tora ' ) ,
) ,
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 \xa1 zev ' ) ) ,
( ' 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 \x98 e \xc5 \xa1 itelsk \xc3 \xbd text ' ) ) ,
( ' zverejnit ' , models . BooleanField ( verbose_name = b ' Zve \xc5 \x99 ejnit? ' ) ) ,
( ' problem ' , models . ForeignKey ( on_delete = django . db . models . deletion . CASCADE , to = ' seminar.Problem ' , verbose_name = b ' Probl \xc3 \xa9 m ' ) ) ,
( ' reseni ' , models . OneToOneField ( blank = True , null = True , on_delete = django . db . models . deletion . CASCADE , to = ' seminar.Reseni ' , verbose_name = b ' \xc5 \x98 e \xc5 \xa1 en \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 = generate_filename_konfera , verbose_name = ' prezentace ' ) ) ,
( ' materialy ' , models . FileField ( help_text = ' Další materiály ke konfeře zabalené do jednoho souboru ' , upload_to = 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 = 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 = 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 ( blank = True , 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 \xa1 dky ' ) ) ,
( ' 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 ( null = True , 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_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 ' , ) ,
) ,
migrations . CreateModel (
name = ' ReseniNode ' ,
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 ' ) ) ,
( ' reseni ' , models . ForeignKey ( on_delete = django . db . models . deletion . PROTECT , to = ' seminar.Reseni ' , verbose_name = ' reseni ' ) ) ,
] ,
options = {
' verbose_name ' : ' Otištěné řešení (Node) ' ,
' verbose_name_plural ' : ' Otištěná řešení (Node) ' ,
' db_table ' : ' seminar_nodes_otistene_reseni ' ,
} ,
bases = ( ' seminar.treenode ' , ) ,
) ,
migrations . AddField (
model_name = ' reseni ' ,
name = ' text_cely ' ,
field = models . OneToOneField ( blank = True , null = True , on_delete = django . db . models . deletion . PROTECT , related_name = ' reseni_cely_set ' , to = ' seminar.ReseniNode ' , verbose_name = ' Plná verze textu řešení ' ) ,
) ,
migrations . RunPython (
code = resitel_to_osoba ,
reverse_code = osoba_to_resitel ,
) ,
migrations . RunPython (
code = spoj_k_organizatorum_osoby ,
reverse_code = django . db . migrations . operations . special . RunPython . noop ,
) ,
migrations . RunPython (
code = fix_problem_0052 ,
reverse_code = django . db . migrations . operations . special . RunPython . noop ,
) ,
migrations . RunPython (
code = fix_pohadka ,
reverse_code = django . db . migrations . operations . special . RunPython . noop ,
) ,
migrations . RunPython (
code = fix_novinka ,
reverse_code = django . db . migrations . operations . special . RunPython . noop ,
) ,
migrations . RunPython (
code = 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 ' ,
) ,
migrations . RunPython (
code = generuj_RocnikNody_a_CisloNody ,
reverse_code = django . db . migrations . operations . special . RunPython . noop ,
) ,
migrations . RunPython (
code = reseni_to_Reseni ,
reverse_code = django . db . migrations . operations . special . 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 . 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 . CreateModel (
name = ' OrgTextNode ' ,
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 ' ) ) ,
( ' org_verejny ' , models . BooleanField ( default = True , help_text = ' Pokud ano, bude org pod článkem podepsaný ' , verbose_name = ' Org je veřejný? ' ) ) ,
( ' organizator ' , models . ForeignKey ( on_delete = django . db . models . deletion . DO_NOTHING , to = ' seminar.Organizator ' , verbose_name = ' Organizátor ' ) ) ,
] ,
options = {
' verbose_name ' : ' Organizátorský článek (Node) ' ,
' verbose_name_plural ' : ' Organizátorské články (Node) ' ,
' db_table ' : ' seminar_nodes_orgtextnode ' ,
} ,
bases = ( ' seminar.treenode ' , ) ,
) ,
migrations . CreateModel (
name = ' CastNode ' ,
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 ' ) ) ,
( ' nadpis ' , models . CharField ( help_text = ' Nadpis podvěšené části obsahu ' , max_length = 100 , verbose_name = ' Nadpis ' ) ) ,
] ,
options = {
' verbose_name ' : ' Část (Node) ' ,
' verbose_name_plural ' : ' Části (Node) ' ,
' db_table ' : ' seminar_nodes_cast ' ,
} ,
bases = ( ' seminar.treenode ' , ) ,
) ,
migrations . AlterField (
model_name = ' treenode ' ,
name = ' first_child ' ,
field = models . ForeignKey ( blank = True , null = True , on_delete = django . db . models . deletion . SET_NULL , related_name = ' father_of_first ' , to = ' seminar.TreeNode ' , verbose_name = ' první potomek ' ) ,
) ,
migrations . RunPython (
code = fix_treenode ,
reverse_code = django . db . migrations . operations . special . RunPython . noop ,
) ,
migrations . RunPython (
code = fix_problem_0087 ,
reverse_code = django . db . migrations . operations . special . RunPython . noop ,
) ,
migrations . RunPython (
code = uloha_to_Uloha ,
reverse_code = django . db . migrations . operations . special . RunPython . noop ,
) ,
migrations . RunPython (
code = tema_to_Tema ,
reverse_code = django . db . migrations . operations . special . RunPython . noop ,
) ,
migrations . RunPython (
code = clanek_to_Clanek ,
reverse_code = django . db . migrations . operations . special . RunPython . noop ,
) ,
migrations . RunPython (
code = fix_Clanek_Reseni ,
reverse_code = django . db . migrations . operations . special . RunPython . noop ,
) ,
migrations . RunPython (
code = Clanek_Treenody ,
reverse_code = django . db . migrations . operations . special . RunPython . noop ,
) ,
migrations . RunPython (
code = konfery_rucne ,
reverse_code = django . db . migrations . operations . special . RunPython . noop ,
) ,
migrations . RunSQL (
sql = " update seminar_problemy set typ = ' uloha ' where typ like ' b_uloha_ ' ; " ,
reverse_sql = " update seminar_problemy set typ = ' uloha ' where typ like ' b_uloha_ ' ; " ,
) ,
migrations . RunPython (
code = vytvor_pohadkanode ,
reverse_code = django . db . migrations . operations . special . RunPython . noop ,
) ,
migrations . RunPython (
code = pokacej_les ,
reverse_code = django . db . migrations . operations . special . RunPython . noop ,
) ,
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 ( null = True , 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 . PROTECT , related_name = ' reseni_cely_set ' , to = ' seminar.ReseniNode ' , 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 . AlterField (
model_name = ' konfera ' ,
name = ' nazev ' ,
field = models . CharField ( help_text = ' Název konfery ' , max_length = 100 , verbose_name = ' název konfery ' ) ,
) ,
migrations . AddField (
model_name = ' treenode ' ,
name = ' nazev ' ,
field = models . TextField ( help_text = ' Tento název se zobrazuje v nabídkách pro výběr vhodného TreeNode ' , null = True , verbose_name = ' název tohoto node ' ) ,
) ,
migrations . RunPython (
code = fix_all_names ,
reverse_code = django . db . migrations . operations . special . RunPython . noop ,
) ,
migrations . AlterModelOptions (
name = ' cislo ' ,
options = { ' ordering ' : [ ' -rocnik__rocnik ' , ' -poradi ' ] , ' verbose_name ' : ' Číslo ' , ' verbose_name_plural ' : ' Čísla ' } ,
) ,
migrations . RenameField (
model_name = ' cislo ' ,
old_name = ' cislo ' ,
new_name = ' poradi ' ,
) ,
migrations . AlterField (
model_name = ' problem ' ,
name = ' nadproblem ' ,
field = models . ForeignKey ( blank = True , null = True , on_delete = django . db . models . deletion . SET_NULL , related_name = ' podproblem ' , to = ' seminar.Problem ' , verbose_name = ' nadřazený problém ' ) ,
) ,
migrations . AddField (
model_name = ' tema ' ,
name = ' abstrakt ' ,
field = models . TextField ( blank = True , verbose_name = ' Abstrakt na rozcestník ' ) ,
) ,
migrations . AddField (
model_name = ' tema ' ,
name = ' obrazek ' ,
field = models . ImageField ( null = True , upload_to = ' ' , verbose_name = ' Obrázek na rozcestník ' ) ,
) ,
migrations . RemoveField (
model_name = ' nastaveni ' ,
name = ' aktualni_rocnik ' ,
) ,
migrations . AddField (
model_name = ' treenode ' ,
name = ' srolovatelne ' ,
field = models . BooleanField ( blank = True , help_text = ' Bude na stránce témátka možnost tuto položku skrýt ' , null = True , verbose_name = ' Srolovatelné ' ) ,
) ,
migrations . AddField (
model_name = ' treenode ' ,
name = ' zajimave ' ,
field = models . BooleanField ( default = False , help_text = ' Zobrazí se daná věc na rozcestníku témátek ' , verbose_name = ' Zajímavé ' ) ,
) ,
migrations . RunPython (
code = copy_mails ,
reverse_code = django . db . migrations . operations . special . RunPython . noop ,
) ,
migrations . AddField (
model_name = ' prilohareseni ' ,
name = ' res_poznamka ' ,
field = models . TextField ( blank = True , help_text = ' Poznámka k příloze řešení, např. co daný soubor obsahuje ' , verbose_name = ' poznámka řešitele ' ) ,
) ,
migrations . AlterField (
model_name = ' hodnoceni ' ,
name = ' problem ' ,
field = models . ForeignKey ( on_delete = django . db . models . deletion . PROTECT , related_name = ' hodnoceni ' , to = ' seminar.Problem ' , verbose_name = ' problém ' ) ,
) ,
migrations . AlterField (
model_name = ' hodnoceni ' ,
name = ' body ' ,
field = models . DecimalField ( decimal_places = 1 , max_digits = 8 , null = True , verbose_name = ' body ' ) ,
) ,
migrations . AlterField (
model_name = ' hodnoceni ' ,
name = ' cislo_body ' ,
field = models . ForeignKey ( null = True , on_delete = django . db . models . deletion . PROTECT , related_name = ' hodnoceni ' , to = ' seminar.Cislo ' , verbose_name = ' číslo pro body ' ) ,
) ,
migrations . DeleteModel (
name = ' Konfery_Ucastnici ' ,
) ,
migrations . RemoveField (
model_name = ' konfera ' ,
name = ' ucastnici ' ,
) ,
migrations . RemoveField (
model_name = ' konfera ' ,
name = ' id ' ,
) ,
migrations . RemoveField (
model_name = ' clanek ' ,
name = ' cislo ' ,
) ,
migrations . RemoveField (
model_name = ' reseni ' ,
name = ' text_zkraceny ' ,
) ,
migrations . DeleteModel (
name = ' KonferaNode ' ,
) ,
migrations . AddField (
model_name = ' konfera ' ,
name = ' problem_ptr ' ,
field = models . OneToOneField ( auto_created = True , on_delete = django . db . models . deletion . CASCADE , parent_link = True , primary_key = True , serialize = False , to = ' seminar.Problem ' ) ,
preserve_default = False ,
) ,
migrations . RemoveField (
model_name = ' konfera ' ,
name = ' nazev ' ,
) ,
migrations . RemoveField (
model_name = ' konfera ' ,
name = ' organizator ' ,
) ,
migrations . RemoveField (
model_name = ' konfera ' ,
name = ' poznamka ' ,
) ,
migrations . RemoveField (
model_name = ' konfera ' ,
name = ' reseni ' ,
) ,
migrations . AlterField (
model_name = ' reseni ' ,
name = ' text_cely ' ,
field = models . OneToOneField ( blank = True , null = True , on_delete = django . db . models . deletion . PROTECT , related_name = ' reseni_cely_set ' , to = ' seminar.ReseniNode ' , verbose_name = ' Plná verze textu řešení ' ) ,
) ,
migrations . DeleteModel (
name = ' ClanekNode ' ,
) ,
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 . CASCADE , to = ' seminar.Konfera ' , verbose_name = ' konfera ' ) ) ,
( ' resitel ' , models . ForeignKey ( on_delete = django . db . models . deletion . PROTECT , to = ' seminar.Resitel ' , verbose_name = ' řešitel ' ) ) ,
] ,
options = {
' verbose_name ' : ' Účast na konfeře ' ,
' verbose_name_plural ' : ' Účasti na konfeře ' ,
' db_table ' : ' seminar_konfery_ucastnici ' ,
' ordering ' : [ ' konfera ' , ' resitel ' ] ,
} ,
) ,
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 = ' cislo ' ,
name = ' pdf ' ,
field = models . FileField ( blank = True , help_text = ' PDF čísla, které si mohou řešitelé stáhnout ' , null = True , upload_to = cislo_pdf_filename , verbose_name = ' pdf ' ) ,
) ,
migrations . AddField (
model_name = ' cislo ' ,
name = ' titulka_nahled ' ,
field = models . ImageField ( blank = True , help_text = ' Obrázek titulní strany, generuje se automaticky ' , null = True , upload_to = cislo_png_filename , verbose_name = ' Obrázek titulní strany ' ) ,
) ,
migrations . AlterField (
model_name = ' treenode ' ,
name = ' first_child ' ,
field = models . OneToOneField ( blank = True , null = True , on_delete = django . db . models . deletion . SET_NULL , related_name = ' father_of_first ' , to = ' seminar.TreeNode ' , verbose_name = ' první potomek ' ) ,
) ,
migrations . AddField (
model_name = ' clanek ' ,
name = ' cislo ' ,
field = models . ForeignKey ( blank = True , null = True , on_delete = django . db . models . deletion . PROTECT , related_name = ' vydane_clanky ' , to = ' seminar.Cislo ' , verbose_name = ' číslo vydání ' ) ,
) ,
migrations . RunPython (
code = najdi_cislo ,
reverse_code = django . db . migrations . operations . special . RunPython . noop ,
) ,
migrations . AlterModelOptions (
name = ' organizator ' ,
options = { ' ordering ' : [ ' -organizuje_do ' , ' osoba__jmeno ' , ' osoba__prijmeni ' ] , ' verbose_name ' : ' Organizátor ' , ' verbose_name_plural ' : ' Organizátoři ' } ,
) ,
migrations . RunPython (
code = add_perms ,
reverse_code = django . db . migrations . operations . special . RunPython . noop ,
) ,
migrations . AddField (
model_name = ' cislo ' ,
name = ' datum_preddeadline ' ,
field = models . DateField ( blank = True , help_text = ' Datum pro příjem řešení, která se otisknou v dalším čísle ' , null = True , verbose_name = ' datum předdeadline ' ) ,
) ,
migrations . AlterField (
model_name = ' textnode ' ,
name = ' text ' ,
field = models . ForeignKey ( on_delete = django . db . models . deletion . CASCADE , to = ' seminar.Text ' , verbose_name = ' text ' ) ,
) ,
migrations . AddField (
model_name = ' resitel ' ,
name = ' zasilat_cislo_emailem ' ,
field = models . BooleanField ( default = False , help_text = ' True pokud chce řešitel dostávat číslo emailem ' , verbose_name = ' zasílat číslo emailem ' ) ,
) ,
migrations . AlterField (
model_name = ' tema ' ,
name = ' rocnik ' ,
field = models . ForeignKey ( blank = True , null = True , on_delete = django . db . models . deletion . PROTECT , related_name = ' temata ' , to = ' seminar.Rocnik ' , verbose_name = ' ročník ' ) ,
) ,
migrations . AlterField (
model_name = ' osoba ' ,
name = ' prezdivka ' ,
field = models . CharField ( blank = True , max_length = 256 , null = True , verbose_name = ' přezdívka ' ) ,
) ,
migrations . RunPython (
code = fix_all ,
reverse_code = django . db . migrations . operations . special . RunPython . noop ,
) ,
migrations . RunPython (
code = fix_zamereni ,
) ,
migrations . AlterField (
model_name = ' tema ' ,
name = ' obrazek ' ,
field = models . ImageField ( blank = True , null = True , upload_to = ' ' , verbose_name = ' Obrázek na rozcestník ' ) ,
) ,
migrations . AlterField (
model_name = ' hodnoceni ' ,
name = ' body ' ,
field = models . DecimalField ( blank = True , decimal_places = 1 , max_digits = 8 , null = True , verbose_name = ' body ' ) ,
) ,
migrations . AlterField (
model_name = ' hodnoceni ' ,
name = ' cislo_body ' ,
field = models . ForeignKey ( blank = True , null = True , on_delete = django . db . models . deletion . PROTECT , related_name = ' hodnoceni ' , to = ' seminar.Cislo ' , verbose_name = ' číslo pro body ' ) ,
) ,
]