@ -10,10 +10,11 @@ import unidecode
import logging
import logging
from seminar . models import Skola , Resitel , Rocnik , Cislo , Problem , Reseni , PrilohaReseni , Nastaveni , Soustredeni , Soustredeni_Ucastnici , Soustredeni_Organizatori , Osoba , Organizator , Prijemce , Tema , Uloha , Konfera , TextNode , UlohaVzorakNode , RocnikNode , CisloNode , TemaVCisleNode , Text , Hodnoceni , UlohaZadaniNode , Novinky , TreeNode
from seminar . models import Skola , Resitel , Rocnik , Cislo , Problem , Reseni , PrilohaReseni , Nastaveni , Soustredeni , Soustredeni_Ucastnici , Soustredeni_Organizatori , Osoba , Organizator , Prijemce , Tema , Uloha , Konfera , TextNode , UlohaVzorakNode , RocnikNode , CisloNode , TemaVCisleNode , Text , Hodnoceni , UlohaZadaniNode , Novinky , TreeNode
import seminar . models as m
from django . contrib . flatpages . models import FlatPage
from django . contrib . flatpages . models import FlatPage
from django . contrib . sites . models import Site
from django . contrib . sites . models import Site
from seminar . treelib import all_children , insert_last_child , all_children_of_type
from seminar . treelib import all_children , insert_last_child , all_children_of_type , create_node_after
User = django . contrib . auth . get_user_model ( )
User = django . contrib . auth . get_user_model ( )
@ -420,6 +421,85 @@ def gen_cisla(rnd, rocniky):
rocnik_cisla . append ( cisla )
rocnik_cisla . append ( cisla )
return rocnik_cisla
return rocnik_cisla
def add_first_child ( node , child ) :
node . first_child = child
node . save ( )
return
def get_text ( ) :
odstavec = lorem . paragraph ( )
return Text . objects . create ( na_web = odstavec , do_cisla = odstavec )
def gen_dlouhe_tema ( rnd , organizatori , rocnik , nazev , obor , kod ) :
tema = Tema . objects . create (
nazev = nazev ,
stav = Problem . STAV_ZADANY ,
zamereni = " M " ,
autor = rnd . choice ( organizatori ) ,
garant = rnd . choice ( organizatori ) ,
kod = str ( kod ) ,
tema_typ = rnd . choice ( Tema . TEMA_CHOICES ) [ 0 ] ,
rocnik = rocnik ,
abstrakt = lorem . paragraph ( )
)
# Generování struktury k tématu
cisla = sorted ( rocnik . cisla . all ( ) , key = lambda cislo : cislo . poradi )
for cislo in cisla :
# Přidáme TemaVCisleNode do daného čísla
cislo_node = cislo . cislonode
tema_cislo_node = TemaVCisleNode . objects . create ( tema = tema )
insert_last_child ( cislo_node , tema_cislo_node )
# Přidávání obsahu do čísla
cast_node = m . CastNode . objects . create ( nadpis = " Příspěvek k číslu {} " . format ( cislo . kod ) )
add_first_child ( tema_cislo_node , cast_node )
text_node = TextNode . objects . create ( text = get_text ( ) )
add_first_child ( cast_node , text_node )
cast_node2 = m . CastNode . objects . create ( nadpis = " První podproblém " )
add_first_child ( text_node , cast_node2 )
text_node2 = TextNode . objects . create ( text = get_text ( ) )
add_first_child ( cast_node2 , text_node2 )
cast_node3 = m . CastNode . objects . create ( nadpis = " Druhý podproblém " )
add_first_child ( text_node2 , cast_node3 )
text_node3 = TextNode . objects . create ( text = get_text ( ) )
add_first_child ( cast_node3 , text_node3 )
cast_node4 = m . CastNode . objects . create ( nadpis = " Třetí podproblém " )
add_first_child ( text_node3 , cast_node4 )
text_node4 = TextNode . objects . create ( text = get_text ( ) )
add_first_child ( cast_node3 , text_node4 )
cast_node3a = m . CastNode . objects . create ( nadpis = " Podproblém paralelní s "
" druhým podproblémem " )
cast_node3 . succ = cast_node3a
cast_node3 . save ( )
text_node3a = TextNode . objects . create ( text = get_text ( ) )
add_first_child ( cast_node3a , text_node3a )
# Občas přidáme mezičíslo
if rnd . randint ( 1 , 3 ) == 1 :
create_node_after ( cislo_node , m . MezicisloNode )
mezicislo_node = cislo_node . succ
cast_node_mezicislo = m . CastNode . objects . create (
nadpis = " Příspěvek k mezičíslu " . format ( cislo . kod ) )
add_first_child ( mezicislo_node , cast_node_mezicislo )
odstavec = lorem . paragraph ( )
text_mezicislo = Text . objects . create ( na_web = odstavec , do_cisla = odstavec )
text_node_mezicislo = TextNode . objects . create ( text = text_mezicislo )
add_first_child ( cast_node_mezicislo , text_node_mezicislo )
return tema
def gen_temata ( rnd , rocniky , rocnik_cisla , organizatori ) :
def gen_temata ( rnd , rocniky , rocnik_cisla , organizatori ) :
logger . info ( ' Generuji témata... ' )
logger . info ( ' Generuji témata... ' )
@ -666,6 +746,10 @@ def create_test_data(size = 6, rnd = None):
# rocnik_temata je pole polí trojic (první číslo :int, poslední číslo :int, téma:Tema), přičemž každé vnitřní pole odpovídá ročníku a FIXME: je to takhle fuj a když to někdo vidí poprvé, tak je z toho smutný, protože vůbec neví, co se děje a co má čekat.
# rocnik_temata je pole polí trojic (první číslo :int, poslední číslo :int, téma:Tema), přičemž každé vnitřní pole odpovídá ročníku a FIXME: je to takhle fuj a když to někdo vidí poprvé, tak je z toho smutný, protože vůbec neví, co se děje a co má čekat.
rocnik_temata = gen_temata ( rnd , rocniky , rocnik_cisla , organizatori )
rocnik_temata = gen_temata ( rnd , rocniky , rocnik_cisla , organizatori )
rocnik = Rocnik . objects . filter ( rocnik = 23 ) . first ( )
dlouhe_tema = gen_dlouhe_tema ( rnd , organizatori , rocnik , " Strašně dlouhé téma " ,
" MFI " , 8 )
# generování úloh k tématům ve všech číslech
# generování úloh k tématům ve všech číslech
gen_ulohy_k_tematum ( rnd , rocniky , rocnik_cisla , rocnik_temata , organizatori )
gen_ulohy_k_tematum ( rnd , rocniky , rocnik_cisla , rocnik_temata , organizatori )