@ -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,71 +207,38 @@ 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
@transaction . atomic
def create_test_data ( size = 6 , rnd = None ) :
assert size > = 1
# pevna pseudo-nahodnost
rnd = rnd or random . Random ( x = 42 )
# static URL stranky
# FIXME: nakopirovat sem vsechny z produkcni databaze
s = Site . objects . filter ( name = " example.com " )
f = FlatPage . objects . create ( url = " / " , title = " Seminář M&M " ,
content = " <p>Vítejte na stránce semináře MaM!</p> " )
f . sites . add ( s [ 0 ] )
f . save ( )
# users
admin = User . objects . create_superuser ( username = ' admin ' , email = ' ' , password = ' admin ' )
usernames = [ ' anet ' , ' bara ' , ' cyril ' , ' david ' , ' eva ' , ' filip ' ]
users = [ ]
for usr in usernames [ : size ] :
u = User . objects . create ( username = usr , password = usr )
u . first_name = usr . capitalize ( )
u . save ( )
users . append ( u )
print ( users )
# skoly
skoly = gen_skoly ( )
# osoby
osoby = gen_osoby ( rnd , size )
# resitele a organizatori
last_rocnik = 25
resitele = gen_resitele ( rnd , osoby , skoly )
organizatori = gen_organizatori ( rnd , osoby , last_rocnik , users )
# prijemci
prijemci = gen_prijemci ( rnd , osoby )
global zlinska
zlinska . kontaktni_osoba = rnd . choice ( osoby )
zlinska . save ( )
# rocniky
def gen_rocniky ( last_rocnik , size ) :
rocniky = [ ]
node = None
for ri in range ( min ( last_rocnik - size , 1 ) , last_rocnik + 1 ) :
r = Rocnik . objects . create ( prvni_rok = 1993 + ri , rocnik = ri )
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
# cisla
cisel = rnd . randint ( 4 , 8 )
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
@ -289,20 +257,25 @@ def create_test_data(size = 6, rnd = None):
deadline = None
cislo = Cislo . objects . create (
rocnik = r ,
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
# 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
if ci < = 3 :
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í " ]
@ -319,56 +292,127 @@ def create_test_data(size = 6, rnd = None):
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
kod = str ( cislo ) ,
# atributy třídy Téma
tema_typ = rnd . choice ( Tema . TEMA_CHOICES ) ,
rocnik = r )
rocnik = rocnik )
t . opravovatele = rnd . sample ( organizatori , poc_op )
t . save ( )
# 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
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 ) :
assert size > = 1
# pevna pseudo-nahodnost
rnd = rnd or random . Random ( x = 42 )
# static URL stranky
# FIXME: nakopirovat sem vsechny z produkcni databaze
s = Site . objects . filter ( name = " example.com " )
f = FlatPage . objects . create ( url = " / " , title = " Seminář M&M " ,
content = " <p>Vítejte na stránce semináře MaM!</p> " )
f . sites . add ( s [ 0 ] )
f . save ( )
# users
admin = User . objects . create_superuser ( username = ' admin ' , email = ' ' , password = ' admin ' )
usernames = [ ' anet ' , ' bara ' , ' cyril ' , ' david ' , ' eva ' , ' filip ' ]
users = [ ]
for usr in usernames [ : size ] :
u = User . objects . create ( username = usr , password = usr )
u . first_name = usr . capitalize ( )
u . save ( )
users . append ( u )
print ( users )
# skoly
skoly = gen_skoly ( )
# osoby
osoby = gen_osoby ( rnd , size )
# resitele a organizatori
last_rocnik = 25
resitele = gen_resitele ( rnd , osoby , skoly )
organizatori = gen_organizatori ( rnd , osoby , last_rocnik , users )
# prijemci
prijemci = gen_prijemci ( rnd , osoby )
global zlinska
zlinska . kontaktni_osoba = rnd . choice ( osoby )
zlinska . save ( )
# rocniky
rocniky = gen_rocniky ( last_rocnik , size )
# cisla
slovnik_rocnik_cisla = gen_cisla ( rocniky )
# 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 )
# 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í úloh k tématům ve všech číslech
gen_ulohy_k_tematum ( rocniky , slovnik_rocnik_cisla , slovnik_rocnik_temata )
# nagenerovat k tématu úlohy a Nody pro vsechna cisla