Browse Source

pokus o úpravu testdat, aby tam byl popis orga - nyní nefunguje ./manage.py testdata

export_seznamu_prednasek
Kateřina Čížková 5 years ago
parent
commit
52f171d397
  1. 240
      seminar/testutils.py

240
seminar/testutils.py

@ -17,73 +17,89 @@ zlinska = None # tohle bude speciální škola, které později dodáme kontaktn
def gen_osoby(rnd, size): def gen_osoby(rnd, size):
jmena_m = ['Aleš', 'Tomáš', 'Martin', 'Jakub', 'Petr', 'Lukáš', 'Cyril', 'Pavel Karel'] jmena_m = ['Aleš', 'Tomáš', 'Martin', 'Jakub', 'Petr', 'Lukáš', 'Cyril', 'Pavel Karel']
jmena_f = ['Eva', 'Karolína', 'Zuzana', 'Sylvie', 'Iva', 'Jana', 'Marie', jmena_f = ['Eva', 'Karolína', 'Zuzana', 'Sylvie', 'Iva', 'Jana', 'Marie',
'Marta Iva', 'Shu Shan'] 'Marta Iva', 'Shu Shan']
prijmeni_m = ['Novotný', 'Svoboda', 'Pecha', 'Kořen', 'Holan', 'Uhlíř', 'Chytráček', prijmeni_m = ['Novotný', 'Svoboda', 'Pecha', 'Kořen', 'Holan', 'Uhlíř', 'Chytráček',
'Pokora', 'Koch', 'Szegedy', 'Rudý', "von Neumann", "d'Este"] 'Pokora', 'Koch', 'Szegedy', 'Rudý', "von Neumann", "d'Este"]
prijmeni_f = ['Novotná', 'Svobodová', 'Machová', 'Zelená', 'Yu-Xin', 'Mlsná', 'Dubná', prijmeni_f = ['Novotná', 'Svobodová', 'Machová', 'Zelená', 'Yu-Xin', 'Mlsná', 'Dubná',
'Mrkvová', 'Suchá', 'Lovelace', 'Holcová', 'Rui'] 'Mrkvová', 'Suchá', 'Lovelace', 'Holcová', 'Rui', "Nováčková Tydlitátová"]
prezdivky = ['Kaki', 'Hurdur', 'Maracuja', 'Bobbo', "", "", "", "", "", prezdivky = ['Kaki', 'Hurdur', 'Maracuja', 'Bobbo', "", "", "", "", "",
"", "", 'Riki', 'Sapa', "", '', '---', 'Koko'] "", "", 'Riki', 'Sapa', "", '', '---', 'Koko']
domain = ['example.com', 'dolujeme.eu', 'mff.cuni.cz', 'strcprstskrzkrk.cz', domain = ['example.com', 'dolujeme.eu', 'mff.cuni.cz', 'strcprstskrzkrk.cz',
'british.co.uk', 'splachni.to', 'haha.org'] 'british.co.uk', 'splachni.to', 'haha.org']
seznam_ulic = ['Krátká', 'Vlhká', 'Jungmanova', '17. listopadu', '4. října', 'Roztocká', seznam_ulic = ['Krátká', 'Vlhká', 'Jungmanova', '17. listopadu', '4. října', 'Roztocká',
'Forstova', 'Generála Františka Janouška', 'Náměstí Války', 'Forstova', 'Generála Františka Janouška', 'Náměstí Války',
'Svratecké náměstí', 'Zelená lhota', 'Z Plynu', 'K Jezeru', 'U Kocourkova', 'Svratecké náměstí', 'Zelená lhota', 'Z Plynu', 'K Jezeru', 'U Kocourkova',
'Uštěpačná', 'Ostrorepská', 'Zubří'] 'Uštěpačná', 'Ostrorepská', 'Zubří']
seznam_mest = ['Praha', 'Brno', 'Ostrava', 'Horní Jelení', 'Dolní Zábrdovice', 'Prdelkov', seznam_mest = ['Praha', 'Brno', 'Ostrava', 'Horní Jelení', 'Dolní Zábrdovice', 'Prdelkov',
'Stará myslivna', 'Kocourkov', 'Šalingrad', 'Medvědí hora', 'Basilej', 'Stará myslivna', 'Kocourkov', 'Šalingrad', 'Medvědí hora', 'Basilej',
'Unterschiedlich', 'Old York', 'Lancastershire', 'Vóloďháza'] 'Unterschiedlich', 'Old York', 'Lancastershire', 'Vóloďháza']
seznam_konicku = ["vařím", "jezdím na kole", "řeším diferenciální rovnice", "koukám z okna",
"tancuji", "programuji", "jezdím vlakem", "nedělám nic"]
seznam_oboru = ["matematiku", "matematiku", "matematiku", "fyziku", "literaturu",
"informatiku", "informatiku", "běhání dokolečka"]
osoby = [] osoby = []
# 30 je náhodná konstanta, size je použité na víc místech a # 30 je náhodná konstanta, size je použité na víc místech a
# říká, jak velká asi chceme testovací data # říká, jak velká asi chceme testovací data
for i in range(30 * size): for i in range(30 * size):
pohlavi = rnd.randint(0,1) pohlavi = rnd.randint(0,1)
jmeno = rnd.choice([jmena_m, jmena_f][pohlavi]) jmeno = rnd.choice([jmena_m, jmena_f][pohlavi])
prijmeni = rnd.choice([prijmeni_m, prijmeni_f][pohlavi]) prijmeni = rnd.choice([prijmeni_m, prijmeni_f][pohlavi])
prezdivka = rnd.choice(prezdivky) prezdivka = rnd.choice(prezdivky)
email = "@".join([unidecode.unidecode(jmeno), rnd.choice(domain)]) email = "@".join([unidecode.unidecode(jmeno), rnd.choice(domain)])
telefon = "".join([str(rnd.choice([k for k in range(10)])) for i in range(9)]) telefon = "".join([str(rnd.choice([k for k in range(10)])) for i in range(9)])
narozeni = datetime.date(rnd.randint(1980, 2020), rnd.randint(1, 12), narozeni = datetime.date(rnd.randint(1980, 2020), rnd.randint(1, 12),
rnd.randint(1, 28)) rnd.randint(1, 28))
ulic = rnd.choice(seznam_ulic) ulic = rnd.choice(seznam_ulic)
cp = rnd.randint(1, 99) cp = rnd.randint(1, 99)
ulice = " ".join([ulic, str(cp)]) ulice = "".join([ulic, str(cp)])
mesto = rnd.choice(seznam_mest) mesto = rnd.choice(seznam_mest)
psc = "".join([str(rnd.choice([k for k in range(10)])) for i in range(5)]) psc = "".join([str(rnd.choice([k for k in range(10)])) for i in range(5)])
osoby.append(Osoba.objects.create(jmeno = jmeno, prijmeni = prijmeni,
prezdivka = prezdivka, pohlavi_muz = pohlavi, email = email, konicek1 = rnd.choice(seznam_konicku)
telefon = telefon, datum_narozeni = narozeni, ulice = ulice, popis_orga = "Ve volném čase ".join(konicek1)
mesto = mesto, psc = psc, popis_orga.join(" a kromě toho taky ")
datum_registrace = datetime.date(rnd.randint(2019, 2029), konicek2 = rnd.choice(seznam_konicku)
popis_orga.join(konicek2)
obor = rnd.choice(seznam_oboru)
popis_orga.join(" Studuji ")
popis_orga.join(obor)
popis_orga.join(" a moc mě to baví.")
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, strucny_popis_organizatora = popis_orga,
datum_registrace = datetime.date(rnd.randint(2019, 2029),
rnd.randint(1, 12), rnd.randint(1, 28)))) rnd.randint(1, 12), rnd.randint(1, 28))))
#TODO pridat foto male a velke. Jak? #TODO pridat foto male a velke. Jak?
# Pavel tvrdí, že to necháme a přidáme až do adminu # Pavel tvrdí, že to necháme a přidáme až do adminu
return osoby return osoby
def gen_skoly(): #TODO někdy to přepsat, aby jich bylo více def gen_skoly(): #TODO někdy to přepsat, aby jich bylo více
skoly = [] skoly = []
prvnizs = Skola.objects.create(mesto='Praha', stat='CZ', psc='101 00', prvnizs = Skola.objects.create(mesto='Praha', stat='CZ', psc='101 00',
ulice='Krátká 5', nazev='První ZŠ', je_zs=True, je_ss=False) ulice='Krátká 5', nazev='První ZŠ', je_zs=True, je_ss=False)
skoly.append(prvnizs) skoly.append(prvnizs)
skoly.append(Skola.objects.create(mesto='Praha', stat='CZ', psc='101 00', 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)) 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', skoly.append(Skola.objects.create(mesto='Praha', stat='CZ', psc='102 00',
ulice='Dlouhá 5', nazev='Druhá SŠ', je_zs=False, je_ss=True)) ulice='Dlouhá 5', nazev='Druhá SŠ', je_zs=False, je_ss=True))
skoly.append(Skola.objects.create(mesto='Praha', stat='CZ', psc='103 00', 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)) 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', skoly.append(Skola.objects.create(mesto='Ostrava', stat='CZ', psc='700 00',
ulice='Hluboká 42', nazev='Hutní gympl', je_zs=False, je_ss=True)) ulice='Hluboká 42', nazev='Hutní gympl', je_zs=False, je_ss=True))
skoly.append(Skola.objects.create(mesto='Humenné', stat='SK', psc='012 34', skoly.append(Skola.objects.create(mesto='Humenné', stat='SK', psc='012 34',
ulice='Pltká 1', nazev='Sredná škuola', je_zs=False, je_ss=True)) ulice='Pltká 1', nazev='Sredná škuola', je_zs=False, je_ss=True))
global zlinska global zlinska
zlinska = Skola.objects.create(mesto = 'Zlín', stat='CZ', psc='76001', zlinska = Skola.objects.create(mesto = 'Zlín', stat='CZ', psc='76001',
ulice='náměstí T.G. Masaryka 2734-9', ulice='náměstí T.G. Masaryka 2734-9',
nazev='Gymnázium a Střední jazyková škola s právem SJZ', nazev='Gymnázium a Střední jazyková škola s právem SJZ',
kratky_nazev="GaSJŠspSJZ", je_zs=True, je_ss=True) kratky_nazev="GaSJŠspSJZ", je_zs=True, je_ss=True)
skoly.append(zlinska) skoly.append(zlinska)
return skoly return skoly
@ -93,8 +109,8 @@ def gen_resitele(rnd, osoby, skoly):
for os in osoby: for os in osoby:
rand = rnd.randint(0, 8) rand = rnd.randint(0, 8)
if not (rand % 8 == 0): if not (rand % 8 == 0):
resitele.append(Resitel.objects.create(osoba=os, skola=rnd.choice(skoly), resitele.append(Resitel.objects.create(osoba=os, skola=rnd.choice(skoly),
rok_maturity=rnd.randint(2019, 2029), rok_maturity=rnd.randint(2019, 2029),
zasilat=rnd.choice(Resitel.ZASILAT_CHOICES))) zasilat=rnd.choice(Resitel.ZASILAT_CHOICES)))
return resitele return resitele
@ -111,20 +127,20 @@ def gen_organizatori(rnd, osoby, last_rocnik, users):
if (rand % 8 == 0): if (rand % 8 == 0):
pusobnost = rnd.randint(1, last_rocnik) pusobnost = rnd.randint(1, last_rocnik)
od = datetime.date(1993 + pusobnost, rnd.randint(1, 12), rnd.randint(1, 28)) 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), do = datetime.date(od.year + rnd.randint(1, 6), rnd.randint(1, 12),
rnd.randint(1, 28)) rnd.randint(1, 28))
#aktualni organizatori jeste nemaji vyplnene organizuje_do #aktualni organizatori jeste nemaji vyplnene organizuje_do
if do.year > datetime.datetime.now().year: if do.year > datetime.datetime.now().year:
do = None do = None
organizatori.append(Organizator.objects.create(osoba=os, organizatori.append(Organizator.objects.create(osoba=os,
organizuje_od=od, organizuje_do=do)) organizuje_od=od, organizuje_do=do))
return organizatori return organizatori
def gen_ulohy_do_cisla(rnd, organizatori, resitele, rocnik_cisla, rocniky, size): def gen_ulohy_do_cisla(rnd, organizatori, resitele, rocnik_cisla, rocniky, size):
# ulohy resene v cisle # ulohy resene v cisle
jaka = ["Šachová", "Černá", "Větrná", "Dlouhá", "Křehká", "Rychlá", jaka = ["Šachová", "Černá", "Větrná", "Dlouhá", "Křehká", "Rychlá",
"Zákeřná", "Fyzikální"] "Zákeřná", "Fyzikální"]
co = ["kostka", "smršť", "díra", "zrada", "toulka", "tyč", co = ["kostka", "smršť", "díra", "zrada", "toulka", "tyč",
"úloha", "blecha"] "úloha", "blecha"]
sloveso = ["Najděte", "Spočítejte", "Zapište", "Změřte", "Odhadněte"] sloveso = ["Najděte", "Spočítejte", "Zapište", "Změřte", "Odhadněte"]
koho = ["délku", "počet", "množství", "dílky"] koho = ["délku", "počet", "množství", "dílky"]
@ -132,9 +148,9 @@ def gen_ulohy_do_cisla(rnd, organizatori, resitele, rocnik_cisla, rocniky, size)
jmeno = ["řešení", "tahů", "čísel", "kalhot", "koulí", "hadů"] jmeno = ["řešení", "tahů", "čísel", "kalhot", "koulí", "hadů"]
kde = ["na zemi", "ve vesmíru", "ve vzduchu", "na šňůře", "v letadle"] kde = ["na zemi", "ve vesmíru", "ve vzduchu", "na šňůře", "v letadle"]
obor = ["M", "F", "I", "O", "B"] obor = ["M", "F", "I", "O", "B"]
reseni = ["to je přece jasné", "triviální", "omlouváme se," reseni = ["to je přece jasné", "triviální", "omlouváme se,"
"otevřený problém", "neřešitelné", "triviálně triviální", "otevřený problém", "neřešitelné", "triviálně triviální",
"použitím věty z prvního semestru na matfyzu", "použitím věty z prvního semestru na matfyzu",
"jednoduše pomocí látky z druhé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ě" "netriviální aplikace diferenciálních rovnic", "zadání je vnitřně"
"sporné", "nepopsatelně jednoduché", "pokud jste na to nepřišli," "sporné", "nepopsatelně jednoduché", "pokud jste na to nepřišli,"
@ -153,29 +169,29 @@ def gen_ulohy_do_cisla(rnd, organizatori, resitele, rocnik_cisla, rocniky, size)
nazev=" ".join([rnd.choice(jaka), rnd.choice(co)]), nazev=" ".join([rnd.choice(jaka), rnd.choice(co)]),
stav=Problem.STAV_ZADANY, stav=Problem.STAV_ZADANY,
zamereni=rnd.sample(["M", "F", "I", "O", "B"], poc_oboru), zamereni=rnd.sample(["M", "F", "I", "O", "B"], poc_oboru),
autor=rnd.choice(organizatori), autor=rnd.choice(organizatori),
garant=rnd.choice(organizatori), garant=rnd.choice(organizatori),
kod=str(pi), kod=str(pi),
# atributy třídy Uloha # atributy třídy Uloha
cislo_zadani=cisla[ci-2-1], cislo_zadani=cisla[ci-2-1],
cislo_reseni=cisla[ci-1], cislo_reseni=cisla[ci-1],
cislo_deadline=cisla[ci-1], cislo_deadline=cisla[ci-1],
max_body = rnd.randint(1, 8) max_body = rnd.randint(1, 8)
) )
text_zadani = Text.objects.create( text_zadani = Text.objects.create(
na_web = " ".join( na_web = " ".join(
[rnd.choice(sloveso), [rnd.choice(sloveso),
rnd.choice(koho), rnd.choice(koho),
rnd.choice(ceho), rnd.choice(ceho),
rnd.choice(jmeno), rnd.choice(jmeno),
rnd.choice(kde)] rnd.choice(kde)]
), ),
do_cisla = " ".join( do_cisla = " ".join(
[rnd.choice(sloveso), [rnd.choice(sloveso),
rnd.choice(koho), rnd.choice(koho),
rnd.choice(ceho), rnd.choice(ceho),
rnd.choice(jmeno), rnd.choice(jmeno),
rnd.choice(kde)] rnd.choice(kde)]
) )
) )
@ -183,7 +199,7 @@ def gen_ulohy_do_cisla(rnd, organizatori, resitele, rocnik_cisla, rocniky, size)
uloha_zadani = UlohaZadaniNode.objects.create(uloha=p, first_child = zad) uloha_zadani = UlohaZadaniNode.objects.create(uloha=p, first_child = zad)
p.ulohazadaninode = uloha_zadani p.ulohazadaninode = uloha_zadani
otec_syn(cisla[ci-2-1].cislonode, uloha_zadani) otec_syn(cisla[ci-2-1].cislonode, uloha_zadani)
text_vzoraku = Text.objects.create( text_vzoraku = Text.objects.create(
na_web = rnd.choice(reseni), na_web = rnd.choice(reseni),
do_cisla = rnd.choice(reseni) do_cisla = rnd.choice(reseni)
@ -198,8 +214,8 @@ def gen_ulohy_do_cisla(rnd, organizatori, resitele, rocnik_cisla, rocniky, size)
# reseni ulohy # reseni ulohy
poc_reseni = rnd.randint(size // 2, size * 2) poc_reseni = rnd.randint(size // 2, size * 2)
#poc_resitel = rnd.randint(1, 3) <- k čemu je himbajs tahle proměnná? #poc_resitel = rnd.randint(1, 3) <- k čemu je himbajs tahle proměnná?
# vybereme nahodny vzorek resitelu o delce poctu reseni # vybereme nahodny vzorek resitelu o delce poctu reseni
# (nebo skoro vsechny resitele, pokud jich je mene nez pocet reseni) # (nebo skoro vsechny resitele, pokud jich je mene nez pocet reseni)
for ri in range(poc_reseni): for ri in range(poc_reseni):
res_vyber = rnd.sample(resitele, rnd.randint(1, 5)) res_vyber = rnd.sample(resitele, rnd.randint(1, 5))
@ -215,7 +231,7 @@ def gen_ulohy_do_cisla(rnd, organizatori, resitele, rocnik_cisla, rocniky, size)
reseni=res, reseni=res,
problem=p problem=p
) )
return return
def gen_soustredeni(rnd, resitele, organizatori): def gen_soustredeni(rnd, resitele, organizatori):
@ -255,8 +271,8 @@ def gen_rocniky(last_rocnik, size):
def gen_konfery(size, rnd, organizatori, resitele, soustredeni): def gen_konfery(size, rnd, organizatori, resitele, soustredeni):
konfery = [] konfery = []
for _ in range(1, size): #FIXME Tu range si změňte jak chcete, nevím, co přesně znamená size (asi Anet?) for _ in range(1, size): #FIXME Tu range si změňte jak chcete, nevím, co přesně znamená size (asi Anet?)
# Anet: size je parametr udávající velikost testovacích dat a dá se pomocí ní škálovat, # Anet: size je parametr udávající velikost testovacích dat a dá se pomocí ní škálovat,
# kolik dat se nageneruje # kolik dat se nageneruje
konfera = Konfera.objects.create( 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ů']), 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(), anotace=lorem.paragraph(),
@ -271,7 +287,7 @@ def gen_konfery(size, rnd, organizatori, resitele, soustredeni):
# Konfery_Ucastnici.objects.create(resitel=res, konfera=konfera) # Konfery_Ucastnici.objects.create(resitel=res, konfera=konfera)
konfera.save() konfera.save()
konfery.append(konfera) konfery.append(konfera)
konferanode = KonferaNode.objects.create(konfera=konfera) konferanode = KonferaNode.objects.create(konfera=konfera)
konferanode.save() konferanode.save()
return konfery return konfery
@ -290,21 +306,21 @@ def gen_cisla(rnd, rocniky):
mesic_vydani = (ci - 1)*2 + 6 mesic_vydani = (ci - 1)*2 + 6
# celociselné dělení mi řekne, jestli to je první nebo druhý rok ročníku # celociselné dělení mi řekne, jestli to je první nebo druhý rok ročníku
vydano = datetime.date(rocnik.prvni_rok + mesic_vydani // 12, vydano = datetime.date(rocnik.prvni_rok + mesic_vydani // 12,
(mesic_vydani - 1) % 12 + 1, (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)) 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 # posledni 2 cisla v rocniku nemaji deadline
if (ci + 2 > cisel): if (ci + 2 > cisel):
deadline = None deadline = None
cislo = Cislo.objects.create( cislo = Cislo.objects.create(
rocnik = rocnik, rocnik = rocnik,
cislo = str(ci), cislo = str(ci),
datum_vydani=vydano, datum_vydani=vydano,
datum_deadline=deadline, datum_deadline=deadline,
verejne_db=True verejne_db=True
) )
node2 = CisloNode.objects.create(cislo = cislo, succ = node) node2 = CisloNode.objects.create(cislo = cislo, succ = node)
@ -314,19 +330,19 @@ def gen_cisla(rnd, rocniky):
otec = False otec = False
rocnik.rocniknode.first_child = node rocnik.rocniknode.first_child = node
rocnik.save() rocnik.save()
cisla.append(cislo) cisla.append(cislo)
rocnik_cisla.append(cisla) rocnik_cisla.append(cisla)
return rocnik_cisla return rocnik_cisla
def gen_temata(rnd, rocniky, rocnik_cisla, organizatori): def gen_temata(rnd, rocniky, rocnik_cisla, organizatori):
jake = ["Hravé", "Fyzikální", "Nejlepší", "Totálně masakrální", jake = ["Hravé", "Fyzikální", "Nejlepší", "Totálně masakrální",
"Šokující", "Magnetické", "Modré", "Překvapivé", "Šokující", "Magnetické", "Modré", "Překvapivé",
"Plasmatické", "Novoroční"] "Plasmatické", "Novoroční"]
co = ["téma", "záření", "stavení", "jiskření", "jelito", co = ["téma", "záření", "stavení", "jiskření", "jelito",
"drama", "kuře", "moře", "klání", "proudění", "čekání"] "drama", "kuře", "moře", "klání", "proudění", "čekání"]
poc_oboru = rnd.randint(1, 2) poc_oboru = rnd.randint(1, 2)
poc_op = rnd.randint(1, 3) poc_op = rnd.randint(1, 3)
rocnik_temata = [] rocnik_temata = []
k = 0 k = 0
@ -342,8 +358,8 @@ def gen_temata(rnd, rocniky, rocnik_cisla, organizatori):
nazev=" ".join([rnd.choice(jake), rnd.choice(co)]), nazev=" ".join([rnd.choice(jake), rnd.choice(co)]),
stav=Problem.STAV_ZADANY, stav=Problem.STAV_ZADANY,
zamereni=rnd.sample(["M", "F", "I", "O", "B"], poc_oboru), zamereni=rnd.sample(["M", "F", "I", "O", "B"], poc_oboru),
autor=rnd.choice(organizatori), autor=rnd.choice(organizatori),
garant=rnd.choice(organizatori), garant=rnd.choice(organizatori),
kod=str(n), kod=str(n),
# atributy třídy Téma # atributy třídy Téma
tema_typ=rnd.choice(Tema.TEMA_CHOICES), tema_typ=rnd.choice(Tema.TEMA_CHOICES),
@ -364,9 +380,9 @@ def gen_temata(rnd, rocniky, rocnik_cisla, organizatori):
def gen_ulohy_k_tematum(rnd, rocniky, rocnik_cisla, rocnik_temata, organizatori): def gen_ulohy_k_tematum(rnd, rocniky, rocnik_cisla, rocnik_temata, organizatori):
# ulohy resene v cisle # ulohy resene v cisle
jaka = ["Šachová", "Černá", "Větrná", "Dlouhá", "Křehká", "Rychlá", jaka = ["Šachová", "Černá", "Větrná", "Dlouhá", "Křehká", "Rychlá",
"Zákeřná", "Fyzikální"] "Zákeřná", "Fyzikální"]
co = ["kostka", "smršť", "díra", "zrada", "toulka", "tyč", co = ["kostka", "smršť", "díra", "zrada", "toulka", "tyč",
"úloha", "blecha"] "úloha", "blecha"]
sloveso = ["Najděte", "Spočítejte", "Zapište", "Změřte", "Odhadněte"] sloveso = ["Najděte", "Spočítejte", "Zapište", "Změřte", "Odhadněte"]
koho = ["délku", "počet", "množství", "dílky"] koho = ["délku", "počet", "množství", "dílky"]
@ -374,9 +390,9 @@ def gen_ulohy_k_tematum(rnd, rocniky, rocnik_cisla, rocnik_temata, organizatori)
jmeno = ["řešení", "tahů", "čísel", "kalhot", "koulí", "hadů"] jmeno = ["řešení", "tahů", "čísel", "kalhot", "koulí", "hadů"]
kde = ["na zemi", "ve vesmíru", "ve vzduchu", "na šňůře", "v letadle"] kde = ["na zemi", "ve vesmíru", "ve vzduchu", "na šňůře", "v letadle"]
obor = ["M", "F", "I", "O", "B"] obor = ["M", "F", "I", "O", "B"]
reseni = ["to je přece jasné", "triviální", "omlouváme se," reseni = ["to je přece jasné", "triviální", "omlouváme se,"
"otevřený problém", "neřešitelné", "triviálně triviální", "otevřený problém", "neřešitelné", "triviálně triviální",
"použitím věty z prvního semestru na matfyzu", "použitím věty z prvního semestru na matfyzu",
"jednoduše pomocí látky z druhé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ě" "netriviální aplikace diferenciálních rovnic", "zadání je vnitřně"
"sporné", "nepopsatelně jednoduché", "pokud jste na to nepřišli," "sporné", "nepopsatelně jednoduché", "pokud jste na to nepřišli,"
@ -387,7 +403,7 @@ def gen_ulohy_k_tematum(rnd, rocniky, rocnik_cisla, rocnik_temata, organizatori)
cisla = rocnik_cisla[k-1] cisla = rocnik_cisla[k-1]
temata = rocnik_temata[k-1] temata = rocnik_temata[k-1]
for ci in range(len(cisla)): for ci in range(len(cisla)):
cislo = cisla[ci-1] cislo = cisla[ci-1]
mozna_tema_vcn = cislo.cislonode.first_child mozna_tema_vcn = cislo.cislonode.first_child
while mozna_tema_vcn != None: while mozna_tema_vcn != None:
if type(mozna_tema_vcn) != TemaVCisleNode: if type(mozna_tema_vcn) != TemaVCisleNode:
@ -395,44 +411,44 @@ def gen_ulohy_k_tematum(rnd, rocniky, rocnik_cisla, rocnik_temata, organizatori)
continue continue
else: else:
tema = mozna_tema_vcn.tema tema = mozna_tema_vcn.tema
if not temata[int(tema.kod)-1][1] >= ci+2: if not temata[int(tema.kod)-1][1] >= ci+2:
mozna_tema_vcn = mozna_tema_vcn.succ mozna_tema_vcn = mozna_tema_vcn.succ
continue continue
for i in range(1, rnd.randint(1, 4)): for i in range(1, rnd.randint(1, 4)):
poc_op = rnd.randint(1, 4) poc_op = rnd.randint(1, 4)
poc_oboru = rnd.randint(1, 2) poc_oboru = rnd.randint(1, 2)
p = Uloha.objects.create( p = Uloha.objects.create(
nazev=": ".join([tema.nazev, nazev=": ".join([tema.nazev,
"úloha {}.".format(i)]), "úloha {}.".format(i)]),
nadproblem=tema, nadproblem=tema,
stav=Problem.STAV_ZADANY, stav=Problem.STAV_ZADANY,
zamereni=tema.zamereni, zamereni=tema.zamereni,
autor=tema.autor, autor=tema.autor,
garant=tema.garant, garant=tema.garant,
kod=str(i), kod=str(i),
cislo_zadani=cislo, cislo_zadani=cislo,
cislo_reseni=cisla[ci+2-1], cislo_reseni=cisla[ci+2-1],
cislo_deadline=cisla[ci+2-1], cislo_deadline=cisla[ci+2-1],
max_body = rnd.randint(1, 8) max_body = rnd.randint(1, 8)
) )
p.opravovatele.set(rnd.sample(organizatori, poc_op)) p.opravovatele.set(rnd.sample(organizatori, poc_op))
text_zadani = Text.objects.create( text_zadani = Text.objects.create(
na_web = " ".join( na_web = " ".join(
[rnd.choice(sloveso), [rnd.choice(sloveso),
rnd.choice(koho), rnd.choice(koho),
rnd.choice(ceho), rnd.choice(ceho),
rnd.choice(jmeno), rnd.choice(jmeno),
rnd.choice(kde)] rnd.choice(kde)]
), ),
do_cisla = " ".join( do_cisla = " ".join(
[rnd.choice(sloveso), [rnd.choice(sloveso),
rnd.choice(koho), rnd.choice(koho),
rnd.choice(ceho), rnd.choice(ceho),
rnd.choice(jmeno), rnd.choice(jmeno),
rnd.choice(kde)] rnd.choice(kde)]
) )
) )
@ -440,7 +456,7 @@ def gen_ulohy_k_tematum(rnd, rocniky, rocnik_cisla, rocnik_temata, organizatori)
uloha_zadani = UlohaZadaniNode.objects.create(uloha=p, first_child = zad) uloha_zadani = UlohaZadaniNode.objects.create(uloha=p, first_child = zad)
p.ulohazadaninode = uloha_zadani p.ulohazadaninode = uloha_zadani
otec_syn(mozna_tema_vcn, uloha_zadani) # TODO dělá se podproblém takto??? TODO otec_syn(mozna_tema_vcn, uloha_zadani) # TODO dělá se podproblém takto??? TODO
text_vzoraku = Text.objects.create( text_vzoraku = Text.objects.create(
na_web = rnd.choice(reseni), na_web = rnd.choice(reseni),
do_cisla = rnd.choice(reseni) do_cisla = rnd.choice(reseni)
@ -452,9 +468,9 @@ def gen_ulohy_k_tematum(rnd, rocniky, rocnik_cisla, rocnik_temata, organizatori)
while res_tema_vcn.tema != tema: while res_tema_vcn.tema != tema:
res_tema_vcn = res_tema_vcn.succ res_tema_vcn = res_tema_vcn.succ
otec_syn(res_tema_vcn, uloha_vzorak) otec_syn(res_tema_vcn, uloha_vzorak)
p.save() p.save()
mozna_tema_vcn = mozna_tema_vcn.succ mozna_tema_vcn = mozna_tema_vcn.succ
return return
@ -470,7 +486,7 @@ def gen_novinky(rnd, organizatori):
novinka = Novinky.objects.create(id=i,autor=rnd.choice(organizatori),text=(text_novinky+", těšíme se na vás!"),zverejneno=rnd.choice([True,False])) novinka = Novinky.objects.create(id=i,autor=rnd.choice(organizatori),text=(text_novinky+", těšíme se na vás!"),zverejneno=rnd.choice([True,False]))
novinka.save() novinka.save()
return return
def otec_syn(otec, syn): def otec_syn(otec, syn):
bratr = otec.first_child bratr = otec.first_child
syn.succ = bratr syn.succ = bratr
@ -487,7 +503,7 @@ def create_test_data(size = 6, rnd = None):
# static URL stranky # static URL stranky
# FIXME: nakopirovat sem vsechny z produkcni databaze # FIXME: nakopirovat sem vsechny z produkcni databaze
s = Site.objects.filter(name="example.com") s = Site.objects.filter(name="example.com")
f = FlatPage.objects.create(url="/", title="Seminář M&M", f = FlatPage.objects.create(url="/", title="Seminář M&M",
content = "<p>V&iacute;tejte na str&aacute;nce semin&aacute;ře MaM!</p>") content = "<p>V&iacute;tejte na str&aacute;nce semin&aacute;ře MaM!</p>")
print(s) print(s)
f.sites.add(s[0]) f.sites.add(s[0])
@ -521,33 +537,33 @@ def create_test_data(size = 6, rnd = None):
# prijemci # prijemci
prijemci = gen_prijemci(rnd, osoby) prijemci = gen_prijemci(rnd, osoby)
global zlinska global zlinska
zlinska.kontaktni_osoba=rnd.choice(osoby) zlinska.kontaktni_osoba=rnd.choice(osoby)
zlinska.save() zlinska.save()
# rocniky # rocniky
rocniky = gen_rocniky(last_rocnik, size) rocniky = gen_rocniky(last_rocnik, size)
# cisla # cisla
rocnik_cisla = gen_cisla(rnd, rocniky) rocnik_cisla = gen_cisla(rnd, rocniky)
# generování obyčejných úloh do čísel # generování obyčejných úloh do čísel
gen_ulohy_do_cisla(rnd, organizatori, resitele, rocnik_cisla, rocniky, size) gen_ulohy_do_cisla(rnd, organizatori, resitele, rocnik_cisla, rocniky, size)
# generování témat, zatím v prvních třech číslech po jednom # generování témat, zatím v prvních třech číslech po jednom
# FIXME: více témat # FIXME: více témat
rocnik_temata = gen_temata(rnd, rocniky, rocnik_cisla, organizatori) rocnik_temata = gen_temata(rnd, rocniky, rocnik_cisla, organizatori)
# 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)
#generování soustředění #generování soustředění
soustredeni = gen_soustredeni(rnd, resitele, organizatori) soustredeni = gen_soustredeni(rnd, resitele, organizatori)
#generování konfer #generování konfer
konfery = gen_konfery(size, rnd, organizatori, resitele, soustredeni) konfery = gen_konfery(size, rnd, organizatori, resitele, soustredeni)
# TODO: nastavi správně, kolik se čeho generuje, aby rozsahy přibližně odpovídaly # TODO: nastavi správně, kolik se čeho generuje, aby rozsahy přibližně odpovídaly
# FIXME: misto typu ruzne typy objektu a vnoreni do sebe (Tom nechápe, co je tímto fixme míněno) # FIXME: misto typu ruzne typy objektu a vnoreni do sebe (Tom nechápe, co je tímto fixme míněno)
# TODO: vytvorit temata s ruznymi vlakny # TODO: vytvorit temata s ruznymi vlakny

Loading…
Cancel
Save