@ -59,6 +59,7 @@ def gen_osoby(rnd, size):
datum_registrace = datetime . date ( rnd . randint ( 2019 , 2029 ) ,
rnd . randint ( 1 , 12 ) , rnd . randint ( 1 , 28 ) ) ) )
#TODO pridat foto male a velke. Jak?
# Pavel tvrdí, že to necháme a přidáme až do adminu
return osoby
@ -206,19 +207,146 @@ def gen_ulohy_do_cisla(rnd, cislo, organizatori, resitele, slovnik_cisel, size):
return
def gen_soustredeni ( ) :
# TODO: vice soustredeni a k nim nahodne podmnoziny organizatoru a ucastniku
# TODO: pozor, organizatori a ucastnici jsou ManyToManyField, musí se přiřadit
# mimo create() a pak dát save()
sous = Soustredeni . objects . create ( rocnik = Rocnik . objects . first ( ) ,
verejne_db = True ,
misto = u ' Někde ' ,
datum_zacatku = datetime . date ( 2000 , 11 , 23 ) ,
datum_konce = datetime . date ( 2000 , 11 , 27 )
)
for res in rnd . sample ( resitele , min ( len ( resitele ) , 20 ) ) :
Soustredeni_Ucastnici . objects . create ( resitel = res , soustredeni = sous )
sous . save ( )
sousy = [ ]
for sousi in range ( 1 , size ) : #FIXME Tu range si změňte jak chcete, nevím, co přesně znamená size (asi Anet?)
datum_zacatku = datetime . date ( randint ( 2000 , 2020 ) , randint ( 1 , 12 ) , radint ( 1 , 28 ) )
working_sous = Soustredeni . objects . create ( rocnik = Rocnik . objects . order_by ( ' ? ' ) . first ( ) ,
verejne_db = rnd . choice ( [ True , False ] ) ,
misto = rnd . choice ( [ ' Kremrolovice ' , ' Indiánov ' , ' U zmzliny ' , ' Vafláreň ' , ' Větrník ' , ' Horní Rakvička ' , ' Dolní cheesecake ' ] ) ,
datum_zacatku = datum_zacatku ,
datum_konce = datum_zacatku + datetime . timedelta ( weeks = 1 ) )
for res in rnd . sample ( resitele , min ( len ( resitele ) , 20 ) ) :
Soustredeni_Ucastnici . objects . create ( resitel = res , soutredeni = working_sous )
for org in rnd . sample ( organizatori , min ( len ( organizatori ) , 20 ) ) :
Soustredeni_Organizatori . objects . create ( organizator = org , soutredeni = working_sous )
working_sous . save ( )
sousy . append ( working_sous )
return sousy
def gen_rocniky ( last_rocnik , size ) :
rocniky = [ ]
node = None
for ri in range ( min ( last_rocnik - size , 1 ) , last_rocnik + 1 ) :
rocnik = Rocnik . objects . create ( prvni_rok = 1993 + ri , rocnik = ri )
node2 = RocnikNode . objects . create ( rocnik = rocnik , succ = node )
node = node2
rocniky . append ( rocnik )
return rocniky
def gen_cisla ( rocniky ) :
slovnik_rocnik_cisla = { }
for rocnik in rocniky :
slovnik_cisel = { }
cisel = rnd . randint ( 4 , 8 )
node = None
for ci in range ( 1 , cisel + 1 ) :
# první číslo vydáváme typicky okolo prázdnin
# (ci - 1)*2 zaručuje první číslo v červnu a všechna
# další po dvou měsících (což je rozumná aproximace)
mesic_vydani = ( ci - 1 ) * 2 + 6
# celociselné dělení mi řekne, jestli to je první nebo druhý rok ročníku
vydano = datetime . date ( r . prvni_rok + mesic_vydani / / 12 ,
mesic_vydani ,
rnd . randint ( 1 , 28 ) )
deadline = datetime . date ( r . prvni_rok + ( mesic_vydani + 2 ) / / 12 ,
mesic_vydani + 2 ,
rnd . randint ( 1 , 28 ) )
# posledni 2 cisla v rocniku nemaji deadline
if ( ci + 2 > cisel ) :
deadline = None
cislo = Cislo . objects . create (
rocnik = rocnik ,
cislo = str ( ci ) ,
datum_vydani = vydano ,
datum_deadline = deadline ,
verejne_db = True
)
node2 = CisloNode . objects . create ( cislo = cislo , succ = node )
node = node2
slovnik_cisel [ ci ] = cislo
slovnik_rocnik_cisla [ rocnik ] = slovnik_cisel
return slovnik_rocnik_cisla
def gen_temata ( rocniky , slovnik_rocnik_cisla ) :
slovnik_rocnik_temata = { }
for rocnik in rocniky :
temata = { }
for cislo in slovnik_r [ rocnik ]
if cislo < = 3 :
jake = [ " Hravé " , " Fyzikální " , " Nejlepší " , " Totálně masakrální " ,
" Šokující " , " Magnetické " , " Modré " , " Překvapivé " ,
" Plasmatické " , " Novoroční " ]
co = [ " téma " , " záření " , " stavení " , " jiskření " , " jelito " ,
" drama " , " kuře " , " moře " , " klání " , " proudění " , " čekání " ]
poc_oboru = rnd . randint ( 1 , 2 )
poc_op = rnd . randint ( 1 , 3 )
t = Tema . objects . create (
# atributy třídy Problem
nazev = " " . join ( [ rnd . choice ( jake ) , rnd . choice ( co ) ] ) ,
stav = Problem . STAV_ZADANY ,
zamereni = rnd . sample ( [ " M " , " F " , " I " , " O " , " B " ] , poc_oboru ) ,
autor = rnd . choice ( organizatori ) ,
garant = rnd . choice ( organizatori ) ,
# FIXME: téma má kód podle čísla, až jich bude
# více, tak udělat kód podle pořadí vygenerování
kod = str ( cislo ) ,
# atributy třídy Téma
tema_typ = rnd . choice ( Tema . TEMA_CHOICES ) ,
rocnik = rocnik )
t . opravovatele = rnd . sample ( organizatori , poc_op )
t . save ( )
temata [ cislo ] = t
slovnik_rocnik_temata [ tema ] = temata
def gen_ulohy_k_tematum ( rocniky , slovnik_rocnik_cisla , slovnik_rocnik_temata ) :
for rocnik in rocniky :
slovnik_cisel = slovnik_rocnik_cisla [ rocnik ]
cisel = len ( slovnik_cisel )
slovnik_temat = slovnik_rocnik_temata [ rocnik ]
for tema in slovnik_temat :
for i in range ( tema .
if #TODO
poc_op = rnd . randint ( 1 , 4 )
poc_oboru = rnd . randint ( 1 , 2 )
p = Uloha . objects . create (
nazev = " : " . join ( [ tema . nazev ,
" úloha {} . " . format ( i - ci + 1 ) ] ) ,
nadproblem = tema ,
stav = Problem . STAV_ZADANY ,
zamereni = t . zamereni ,
autor = t . autor ,
garant = t . garant ,
opravovatele = rnd . sample ( organizatori , poc_op ) ,
kod = str ( i ) ,
cislo_zadani = slovnik_cisel [ ci ] ,
cislo_reseni = slovnik_cisel [ ci + 2 ] ,
cislo_deadline = slovnik_cisel [ ci + 2 ] ,
max_body = rnd . randint ( 1 , 8 ) )
p . zadani = " " . join ( [ rnd . choice ( sloveso ) , rnd . choice ( koho ) ,
rnd . choice ( ceho ) , rnd . choice ( jmeno ) , rnd . choice ( kde ) ] )
#Tomův pokus o opravu bugu:
text_vzoraku = Text . objects . create (
na_web = rnd . choice ( reseni ) ,
do_cisla = rnd . choice ( reseni )
)
vzorak = TextNode . objects . create ( text = text_vzoraku )
uloha_vzorak = UlohaVzorakNode . objects . create ( uloha = p , first_child = vzorak )
p . UlohaVzorakNode = uloha_vzorak
#p.vzorak = " - ".join([p.zadani, rnd.choice(reseni)])
p . save ( )
# vytvor text
# vytvor TemaVCisleNode
if ( rnd . randint ( 1 , 3 ) % 3 == 0 ) :
# vytvor mezicislo Node
pass
@transaction . atomic
def create_test_data ( size = 6 , rnd = None ) :
@ -265,110 +393,26 @@ def create_test_data(size = 6, rnd = None):
zlinska . save ( )
# rocniky
for ri in range ( min ( last_rocnik - size , 1 ) , last_rocnik + 1 ) :
r = Rocnik . objects . create ( prvni_rok = 1993 + ri , rocnik = ri )
rocniky = gen_rocniky ( last_rocnik , size )
# cisla
cisel = rnd . randint ( 4 , 8 )
slovnik_cisel = { }
for ci in range ( 1 , cisel + 1 ) :
# první číslo vydáváme typicky okolo prázdnin
# (ci - 1)*2 zaručuje první číslo v červnu a všechna
# další po dvou měsících (což je rozumná aproximace)
mesic_vydani = ( ci - 1 ) * 2 + 6
# celociselné dělení mi řekne, jestli to je první nebo druhý rok ročníku
vydano = datetime . date ( r . prvni_rok + mesic_vydani / / 12 ,
mesic_vydani ,
rnd . randint ( 1 , 28 ) )
deadline = datetime . date ( r . prvni_rok + ( mesic_vydani + 2 ) / / 12 ,
mesic_vydani + 2 ,
rnd . randint ( 1 , 28 ) )
# cisla
slovnik_rocnik_cisla = gen_cisla ( rocniky )
# posledni 2 cisla v rocniku nemaji deadline
if ( ci + 2 > cisel ) :
deadline = None
cislo = Cislo . objects . create (
rocnik = r ,
cislo = str ( ci ) ,
datum_vydani = vydano ,
datum_deadline = deadline ,
verejne_db = True
)
slovnik_cisel [ ci ] = cislo
# generování obyčejných úloh do čísel
for rocnik in rocniky :
slovnik_cisel = slovnik_rocnik_cisla [ rocnik ]
for cislo in slovnik_cisel :
gen_ulohy_do_cisla ( rnd , cislo , organizatori , resitele , slovnik_cisel , size )
# generovani uloh
gen_ulohy_do_cisla ( rnd , ci , organizatori , resitele , slovnik_cisel , size )
# generování témat, zatím v prvních třech číslech po jednom
# FIXME: více témat
slovnik_rocnik_temata = gen_temata ( rocniky , slovnik_rocnik_cisla )
# generování témat, zatím v prvních třech číslech po jednom
# FIXME: více témat
if ci < = 3 :
jake = [ " Hravé " , " Fyzikální " , " Nejlepší " , " Totálně masakrální " ,
" Šokující " , " Magnetické " , " Modré " , " Překvapivé " ,
" Plasmatické " , " Novoroční " ]
co = [ " téma " , " záření " , " stavení " , " jiskření " , " jelito " ,
" drama " , " kuře " , " moře " , " klání " , " proudění " , " čekání " ]
poc_oboru = rnd . randint ( 1 , 2 )
poc_op = rnd . randint ( 1 , 3 )
t = Tema . objects . create (
# atributy třídy Problem
nazev = " " . join ( [ rnd . choice ( jake ) , rnd . choice ( co ) ] ) ,
stav = Problem . STAV_ZADANY ,
zamereni = rnd . sample ( [ " M " , " F " , " I " , " O " , " B " ] , poc_oboru ) ,
autor = rnd . choice ( organizatori ) ,
garant = rnd . choice ( organizatori ) ,
# FIXME: téma má kód podle čísla, až jich bude
# více, tak udělat kód podle pořadí vygenerování
kod = str ( ci ) ,
# atributy třídy Téma
tema_typ = rnd . choice ( Tema . TEMA_CHOICES ) ,
rocnik = r )
# generování úloh k tématům ve všech číslech
gen_ulohy_k_tematum ( rocniky , slovnik_rocnik_cisla , slovnik_rocnik_temata )
t . opravovatele = rnd . sample ( organizatori , poc_op )
t . save ( )
# nagenerovat k tématu úlohy a Nody pro vsechna cisla
# FIXME: nefunguje, protože další čísla v tuhle chvíli ještě
# nejsou nagenerovaná
# nagenerovat k tématu úlohy a Nody pro vsechna cisla
for i in range ( ci , cisel - 2 ) :
# vytvoř úlohu pro každé ze zbývajících čísel
poc_op = rnd . randint ( 1 , 4 )
poc_oboru = rnd . randint ( 1 , 2 )
p = Uloha . objects . create (
nazev = " : " . join ( [ t . nazev ,
" úloha {} . " . format ( i - ci + 1 ) ] ) ,
nadproblem = t ,
stav = Problem . STAV_ZADANY ,
zamereni = t . zamereni ,
autor = t . autor ,
garant = t . garant ,
opravovatele = rnd . sample ( organizatori , poc_op ) ,
kod = str ( i ) ,
cislo_zadani = slovnik_cisel [ ci ] ,
cislo_reseni = slovnik_cisel [ ci + 2 ] ,
cislo_deadline = slovnik_cisel [ ci + 2 ] ,
max_body = rnd . randint ( 1 , 8 ) )
p . zadani = " " . join ( [ rnd . choice ( sloveso ) , rnd . choice ( koho ) ,
rnd . choice ( ceho ) , rnd . choice ( jmeno ) , rnd . choice ( kde ) ] )
#Tomův pokus o opravu bugu:
text_vzoraku = Text . objects . create (
na_web = rnd . choice ( reseni ) ,
do_cisla = rnd . choice ( reseni )
)
vzorak = TextNode . objects . create ( text = text_vzoraku )
uloha_vzorak = UlohaVzorakNode . objects . create ( uloha = p , first_child = vzorak )
p . UlohaVzorakNode = uloha_vzorak
#p.vzorak = " - ".join([p.zadani, rnd.choice(reseni)])
p . save ( )
# vytvor text
# vytvor TemaVCisleNode
if ( rnd . randint ( 1 , 3 ) % 3 == 0 ) :
# vytvor mezicislo Node
pass