# -*- coding: utf-8 -*-
import datetime
import random
import lorem
import django . contrib . auth
from django . db import transaction
import unidecode
from seminar . models import Skola , Resitel , Rocnik , Cislo , Problem , Reseni , PrilohaReseni , Nastaveni , Soustredeni , Soustredeni_Ucastnici , Soustredeni_Organizatori , Osoba , Organizator , Prijemce , Tema , Uloha , Konfera , KonferaNode , TextNode , UlohaVzorakNode , RocnikNode , CisloNode , TemaVCisleNode , Text , Hodnoceni
from django . contrib . flatpages . models import FlatPage
from django . contrib . sites . models import Site
User = django . contrib . auth . get_user_model ( )
zlinska = None # tohle bude speciální škola, které později dodáme kontaktní osobu
def gen_osoby ( rnd , size ) :
jmena_m = [ ' Aleš ' , ' Tomáš ' , ' Martin ' , ' Jakub ' , ' Petr ' , ' Lukáš ' , ' Cyril ' , ' Pavel Karel ' ]
jmena_f = [ ' Eva ' , ' Karolína ' , ' Zuzana ' , ' Sylvie ' , ' Iva ' , ' Jana ' , ' Marie ' ,
' Marta Iva ' , ' Shu Shan ' ]
prijmeni_m = [ ' Novotný ' , ' Svoboda ' , ' Pecha ' , ' Kořen ' , ' Holan ' , ' Uhlíř ' , ' Chytráček ' ,
' Pokora ' , ' Koch ' , ' Szegedy ' , ' Rudý ' , " von Neumann " , " d ' Este " ]
prijmeni_f = [ ' Novotná ' , ' Svobodová ' , ' Machová ' , ' Zelená ' , ' Yu-Xin ' , ' Mlsná ' , ' Dubná ' ,
' Mrkvová ' , ' Suchá ' , ' Lovelace ' , ' Holcová ' , ' Rui ' ]
prezdivka = [ ' Kaki ' , ' Hurdur ' , ' Maracuja ' , ' Bobbo ' , " " , " " , " " , " " , " " ,
" " , " " , ' Riki ' , ' Sapa ' , " " , ' ' , ' --- ' , ' Koko ' ]
domain = [ ' example.com ' , ' dolujeme.eu ' , ' mff.cuni.cz ' , ' strcprstskrzkrk.cz ' ,
' british.co.uk ' , ' splachni.to ' , ' haha.org ' ]
seznam_ulic = [ ' Krátká ' , ' Vlhká ' , ' Jungmanova ' , ' 17. listopadu ' , ' 4. října ' , ' Roztocká ' ,
' Forstova ' , ' Generála Františka Janouška ' , ' Náměstí Války ' ,
' Svratecké náměstí ' , ' Zelená lhota ' , ' Z Plynu ' , ' K Jezeru ' , ' U Kocourkova ' ,
' Uštěpačná ' , ' Ostrorepská ' , ' Zubří ' ]
seznam_mest = [ ' Praha ' , ' Brno ' , ' Ostrava ' , ' Horní Jelení ' , ' Dolní Zábrdovice ' , ' Prdelkov ' ,
' Stará myslivna ' , ' Kocourkov ' , ' Šalingrad ' , ' Medvědí hora ' , ' Basilej ' ,
' Unterschiedlich ' , ' Old York ' , ' Lancastershire ' , ' Vóloďháza ' ]
osoby = [ ]
# 3 je náhodná konstanta, size je použité na víc místech a
# říká, jak velká asi chceme testovací data
for i in range ( 3 * size ) :
pohlavi = rnd . randint ( 0 , 1 )
jmeno = rnd . choice ( [ jmena_m , jmena_f ] [ pohlavi ] )
prijmeni = rnd . choice ( [ prijmeni_m , prijmeni_f ] [ pohlavi ] )
prezdivka = rnd . choice ( [ prezdivka ] )
email = " @ " . join ( [ unidecode . unidecode ( jmeno ) , rnd . choice ( domain ) ] )
telefon = [ rnd . choice ( [ k for k in range ( 10 ) ] ) for i in range ( 10 ) ]
narozeni = datetime . date ( rnd . randint ( 1980 , 2020 ) , rnd . randint ( 1 , 12 ) ,
rnd . randint ( 1 , 28 ) )
ulic = rnd . choice ( seznam_ulic )
print ( ulic ) #FIXME: pozdeji smazat, jen debug
cp = rnd . randint ( 1 , 99 )
ulice = " " . join ( [ ulic , str ( cp ) ] )
mesto = rnd . choice ( [ seznam_mest ] )
psc = [ rnd . choice ( [ k for k in range ( 10 ) ] ) for i in range ( 6 ) ]
osoby . append ( Osoba . objects . create ( jmeno = jmeno , prijmeni = prijmeni ,
prezdivka = prezdivka , pohlavi_muz = pohlavi , email = email ,
telefon = telefon , datum_narozeni = narozeni , ulice = ulice ,
mesto = mesto , psc = psc ,
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
def gen_skoly ( ) : #TODO někdy to přepsat, aby jich bylo více
skoly = [ ]
prvnizs = Skola . objects . create ( mesto = ' Praha ' , stat = ' CZ ' , psc = ' 101 00 ' ,
ulice = ' Krátká 5 ' , nazev = ' První ZŠ ' , je_zs = True , je_ss = False )
skoly . append ( prvnizs )
skoly . append ( Skola . objects . create ( mesto = ' Praha ' , stat = ' CZ ' , psc = ' 101 00 ' ,
ulice = ' Krátká 5 ' , nazev = ' První SŠ ' , je_zs = False , je_ss = True ) )
skoly . append ( Skola . objects . create ( mesto = ' Praha ' , stat = ' CZ ' , psc = ' 102 00 ' ,
ulice = ' Dlouhá 5 ' , nazev = ' Druhá SŠ ' , je_zs = False , je_ss = True ) )
skoly . append ( Skola . objects . create ( mesto = ' Praha ' , stat = ' CZ ' , psc = ' 103 00 ' ,
ulice = ' Široká 3 ' , nazev = ' Třetí SŠ a ZŠ ' , je_zs = True , je_ss = True ) )
skoly . append ( Skola . objects . create ( mesto = ' Ostrava ' , stat = ' CZ ' , psc = ' 700 00 ' ,
ulice = ' Hluboká 42 ' , nazev = ' Hutní gympl ' , je_zs = False , je_ss = True ) )
skoly . append ( Skola . objects . create ( mesto = ' Humenné ' , stat = ' SK ' , psc = ' 012 34 ' ,
ulice = ' Pltká 1 ' , nazev = ' Sredná škuola ' , je_zs = False , je_ss = True ) )
#FIXME pridat kontaktni osobu alespon nekde
global zlinska
zlinska = Skola . objects . create ( mesto = ' Zlín ' , stat = ' CZ ' , psc = ' 76001 ' ,
ulice = ' náměstí T.G. Masaryka 2734-9 ' ,
nazev = ' Gymnázium a Střední jazyková škola s právem SJZ ' ,
kratky_nazev = " GaSJŠspSJZ " , je_zs = True , je_ss = True )
skoly . append ( zlinska )
return skoly
def gen_resitele ( rnd , osoby , skoly ) :
resitele = [ ]
for os in osoby :
rand = rnd . randint ( 0 , 8 )
if not ( rand % 8 == 0 ) :
resitele . append ( Resitel . objects . create ( osoba = os , skola = rnd . choice ( skoly ) ,
rok_maturity = rnd . randint ( 2019 , 2029 ) ,
zasilat = rnd . choice ( Resitel . ZASILAT_CHOICES ) ) )
return resitele
def gen_prijemci ( rnd , osoby , kolik = 10 ) :
prijemci = [ ]
for i in rnd . sample ( osoby , kolik ) :
prijemci . append ( Prijemce . objects . create ( osoba = i ) )
return prijemci
def gen_organizatori ( rnd , osoby , last_rocnik , users ) :
organizatori = [ ]
for os in osoby :
rand = rnd . randint ( 0 , 8 )
if ( rand % 8 == 0 ) :
pusobnost = rnd . randint ( 1 , last_rocnik )
od = datetime . date ( 1993 + pusobnost , rnd . randint ( 1 , 12 ) , rnd . randint ( 1 , 28 ) )
do = datetime . date ( od . year + rnd . randint ( 1 , 6 ) , rnd . randint ( 1 , 12 ) ,
rnd . randint ( 1 , 28 ) )
#aktualni organizatori jeste nemaji vyplnene organizuje_do
if do . year > datetime . datetime . now ( ) . year :
do = None
organizatori . append ( Organizator . objects . create ( osoba = os ,
organizuje_od = od , organizuje_do = do ) )
return organizatori
def gen_ulohy_do_cisla ( rnd , ci , organizatori , resitele , slovnik_cisel , size ) :
# ulohy resene v cisle
jaka = [ " Šachová " , " Černá " , " Větrná " , " Dlouhá " , " Křehká " , " Rychlá " ,
" Zákeřná " , " Fyzikální " ]
co = [ " kostka " , " smršť " , " díra " , " zrada " , " toulka " , " tyč " ,
" úloha " , " blecha " ]
sloveso = [ " Najděte " , " Spočítejte " , " Zapište " , " Změřte " , " Odhadněte " ]
koho = [ " délku " , " počet " , " množství " , " dílky " ]
ceho = [ " všech " , " správných " , " konstatních " , " zelených " ]
jmeno = [ " řešení " , " tahů " , " čísel " , " kalhot " , " koulí " , " hadů " ]
kde = [ " na zemi " , " ve vesmíru " , " ve vzduchu " , " na šňůře " , " v letadle " ]
obor = [ " M " , " F " , " I " , " O " , " B " ]
reseni = [ " to je přece jasné " , " triviální " , " omlouváme se, "
" otevřený problém " , " neřešitelné " , " triviálně triviální " ,
" použitím věty z prvního semestru na matfyzu " ,
" jednoduše pomocí látky z druhého semestru na matfyzu " ,
" netriviální aplikace diferenciálních rovnic " , " zadání je vnitřně "
" sporné " , " nepopsatelně jednoduché " , " pokud jste na to nepřišli, "
" tak jste fakt hloupí " ]
if ci > = 3 : #TODO nagenerovat i nody!!!
for pi in range ( 1 , ( ( size + 1 ) / / 2 ) + 1 ) :
poc_op = rnd . randint ( 1 , 4 ) # počet opravovatelů
poc_oboru = rnd . randint ( 1 , 2 )
p = Uloha . objects . create (
# atributy třídy Problem
nazev = " " . join ( [ rnd . choice ( jaka ) , 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 ) ,
kod = str ( pi ) ,
# atributy třídy Uloha
cislo_zadani = slovnik_cisel [ ci - 2 ] ,
cislo_reseni = slovnik_cisel [ ci ] ,
cislo_deadline = slovnik_cisel [ ci ] ,
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 . opravovatele . set ( rnd . sample ( organizatori , poc_op ) )
p . save ( )
# reseni ulohy
poc_reseni = rnd . randint ( size / / 2 , size * 2 )
#poc_resitel = rnd.randint(1, 3) <- k čemu je himbajs tahle proměnná?
# vybereme nahodny vzorek resitelu o delce poctu reseni
# (nebo skoro vsechny resitele, pokud jich je mene nez pocet reseni)
for ri in range ( poc_reseni ) :
res_vyber = rnd . sample ( resitele , rnd . randint ( 1 , 5 ) )
# problem a resitele přiřadíme později, ManyToManyField
# se nedá vyplnit v create()
res = Reseni . objects . create ( forma = rnd . choice ( Reseni . FORMA_CHOICES ) )
res . save ( )
hod = Hodnoceni . objects . create (
body = rnd . randint ( 0 , p . max_body ) ,
cislo_body = slovnik_cisel [ ci ] ,
reseni = res ,
problem = p
)
return
def gen_soustredeni ( rnd , resitele , organizatori ) :
soustredeni = [ ]
for _ in range ( 1 , 10 ) : #FIXME Tu range si změňte jak chcete, nevím, co přesně znamená size (asi Anet?)
datum_zacatku = datetime . date ( rnd . randint ( 2000 , 2020 ) , rnd . randint ( 1 , 12 ) , rnd . randint ( 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 ' ] ) ,
typ = rnd . choice ( [ ' jarni ' , ' podzimni ' , ' vikend ' ] ) ,
datum_zacatku = datum_zacatku ,
datum_konce = datum_zacatku + datetime . timedelta ( days = 7 ) )
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 ( )
soustredeni . append ( working_sous )
return soustredeni
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 )
rocnik . save ( )
node = node2
rocniky . append ( rocnik )
return rocniky
def gen_konfery ( rnd , reseni , organizatori , ucastnici , soustredeni ) :
konfery = [ ]
for _ in range ( 1 , size ) : #FIXME Tu range si změňte jak chcete, nevím, co přesně znamená size (asi Anet?)
konfera = Konfera . objects . create (
nazev = rnd . choice ( [ ' Pozorování ' , ' Zkoumání ' , ' Modelování ' , ' Počítání ' , ' Zkoušení ' ] ) + rnd . choice ( [ ' vlastností ' , ' jevů ' , ' charakteristik ' ] ) + rnd . choice ( [ ' vektorových prostorů ' , ' kinetické terorie látek ' , ' molekulární biologie ' , ' syntentických stromů ' ] ) ,
anotace = lorem . paragraph ( ) ,
abstrakt = lorem . paragraph ( ) ,
organizator = rnd . choice ( organizatori ) ,
soustredeni = rnd . choice ( soustredeni ) ,
reseni = rnd . choice ( reseni ) ,
typ_prezentace = rnd . choice ( [ ' veletrh ' , ' prezentace ' ] ) )
for res in rnd . sample ( ucastnici , min ( len ( ucastnici ) , rnd . randint ( 3 , 6 ) ) ) :
Konfery_Ucastnici . objects . create ( resitel = res , konfera = konfera )
konfery . append ( konfera )
konfera . save ( )
konferanode = KonferaNode . objects . create ( konfera = konfera )
konferanode . save ( )
return konfery
def gen_cisla ( rnd , rocniky ) :
slovnik_rocnik_cisla = { }
for rocnik in rocniky :
otec = True
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 ( rocnik . prvni_rok + mesic_vydani / / 12 ,
( mesic_vydani - 1 ) % 12 + 1 ,
rnd . randint ( 1 , 28 ) )
deadline = datetime . date ( rocnik . prvni_rok + ( mesic_vydani + 2 ) / / 12 ,
( mesic_vydani + 1 ) % 12 + 1 ,
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 )
cislo . save ( )
node = node2
if otec :
otec = False
rocnik . rocniknode . first_child = node
rocnik . save ( )
slovnik_cisel [ ci ] = cislo
slovnik_rocnik_cisla [ rocnik ] = slovnik_cisel
return slovnik_rocnik_cisla
def gen_temata ( rnd , rocniky , slovnik_rocnik_cisla , organizatori ) :
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 )
slovnik_rocnik_temata = { }
for rocnik in rocniky :
n = 1
temata = { }
slovnik_cisel = slovnik_rocnik_cisla [ rocnik ]
for ci in slovnik_cisel :
if ci < = 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 ) ,
kod = str ( n ) ,
# atributy třídy Téma
tema_typ = rnd . choice ( Tema . TEMA_CHOICES ) ,
rocnik = rocnik
)
n + = 1
konec_tematu = min ( rnd . randint ( ci , 7 ) , len ( slovnik_cisel ) )
for i in range ( ci , konec_tematu + 1 ) :
node = TemaVCisleNode . objects . create ( tema = t )
otec = slovnik_cisel [ i ] . cislonode
otec_syn ( otec , node )
t . opravovatele . set ( rnd . sample ( organizatori , poc_op ) )
t . save ( )
temata [ n ] = ( ci , konec_tematu , t )
slovnik_rocnik_temata [ rocnik ] = temata
return slovnik_rocnik_temata
def gen_ulohy_k_tematum ( rocniky , slovnik_rocnik_cisla , slovnik_rocnik_temata ) : #Tahle funkce je nedodělaná
# ulohy resene v cisle
jaka = [ " Šachová " , " Černá " , " Větrná " , " Dlouhá " , " Křehká " , " Rychlá " ,
" Zákeřná " , " Fyzikální " ]
co = [ " kostka " , " smršť " , " díra " , " zrada " , " toulka " , " tyč " ,
" úloha " , " blecha " ]
sloveso = [ " Najděte " , " Spočítejte " , " Zapište " , " Změřte " , " Odhadněte " ]
koho = [ " délku " , " počet " , " množství " , " dílky " ]
ceho = [ " všech " , " správných " , " konstatních " , " zelených " ]
jmeno = [ " řešení " , " tahů " , " čísel " , " kalhot " , " koulí " , " hadů " ]
kde = [ " na zemi " , " ve vesmíru " , " ve vzduchu " , " na šňůře " , " v letadle " ]
obor = [ " M " , " F " , " I " , " O " , " B " ]
reseni = [ " to je přece jasné " , " triviální " , " omlouváme se, "
" otevřený problém " , " neřešitelné " , " triviálně triviální " ,
" použitím věty z prvního semestru na matfyzu " ,
" jednoduše pomocí látky z druhého semestru na matfyzu " ,
" netriviální aplikace diferenciálních rovnic " , " zadání je vnitřně "
" sporné " , " nepopsatelně jednoduché " , " pokud jste na to nepřišli, "
" tak jste fakt hloupí " ]
for rocnik in rocniky :
slovnik_cisel = slovnik_rocnik_cisla [ rocnik ]
slovnik_temat = slovnik_rocnik_temata [ rocnik ]
for ci in list ( slovnik_cisel ) [ : - 2 ] :
cislo = slovnik_cisel [ ci ]
mozna_tema_vcn = cislo . cislonode . first_child
while mozna_tema_vcn != None :
if type ( mozna_tema_vcn ) != TemaVCisleNode :
continue
else :
tema = mozna_tema_vcn . tema
if not slovnik_temat [ int ( tema . kod ) ] [ 1 ] > = ci + 2 : # Dnes, za přítomnosti dvou svědků Tomáš Domes slíbil, že tento slovník, ve kterém používá jako klíče přirozená čísla, přepíše na normální list. Budiž. Zde jsem také skončil 21. 6. léta Páně 2019 s první vlnou debugování. Bože žehnej těm, kteří toto debugovací břímě převezmou.
continue
for i in range ( 1 , rnd . randint ( 1 , 4 ) ) :
poc_op = rnd . randint ( 1 , 4 )
poc_oboru = rnd . randint ( 1 , 2 )
p = Uloha . objects . create (
nazev = " : " . join ( [ tema . nazev ,
" úloha {} . " . format ( i ) ] ) ,
nadproblem = tema ,
stav = Problem . STAV_ZADANY ,
zamereni = tema . zamereni ,
autor = tema . autor ,
garant = tema . garant ,
opravovatele = rnd . sample ( organizatori , poc_op ) ,
kod = str ( i ) ,
cislo_zadani = cislo ,
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 ) ] )
uloha_zadani = UlohaZadaniNode . objects . create ( uloha = p )
p . UlohaZadaniNode = uloha_zadani
otec_syn ( mozna_tema_vcn , uloha_zadani )
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
#res_tema_vcn =
res_tema_vcn = slovnik_cisel [ ci + 2 ] . CisloNode . first_child
while res_tema_vcn . tema != tema :
res_tema_vcn = res_tema_vcn . succ
otec_syn ( res_tema_vcn , uloha_vzorak )
p . save ( )
mozna_tema_vcn = mozna_tema_vcn . succ
def otec_syn ( otec , syn ) :
bratr = otec . first_child
syn . succ = bratr
otec . first_child = syn
syn . save ( )
otec . save ( )
@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 ( )
#TODO Generovat soustredeni konfery
# 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 ( rnd , rocniky )
# generování obyčejných úloh do čísel
for rocnik in rocniky :
slovnik_cisel = slovnik_rocnik_cisla [ rocnik ]
for ci in slovnik_cisel :
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 ( rnd , rocniky , slovnik_rocnik_cisla , organizatori )
# generování úloh k tématům ve všech číslech
gen_ulohy_k_tematum ( rocniky , slovnik_rocnik_cisla , slovnik_rocnik_temata )
# FIXME: misto typu ruzne typy objektu a vnoreni do sebe
# TODO: vytvorit temata s ruznymi vlakny
# TODO: nagenerovat starsim rocnikum pohadku
# TODO: nagenerovat články
# TODO: nagenerovat konfery
# TODO: vecpat obrázky všude, kde to jde
# TODO: nagenerovat nějaký strom nodů?
# TODO: mezičíslo node
# TODO: nahodne nagenerovat problemum reseni a prilohy reseni, hodnoceni
# obecné nastavení semináře, musí být už přidané ročníky a čísla, jinak se nastaví divně
nastaveni = Nastaveni . objects . create ( aktualni_rocnik = Rocnik . objects . last ( ) ,
aktualni_cislo = Cislo . objects . all ( ) [ 1 ] )