|
@ -7,7 +7,7 @@ import django.contrib.auth |
|
|
from django.db import transaction |
|
|
from django.db import transaction |
|
|
import unidecode |
|
|
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 |
|
|
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 |
|
|
|
|
|
|
|
|
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 |
|
@ -102,11 +102,8 @@ def gen_resitele(rnd, osoby, skoly): |
|
|
|
|
|
|
|
|
def gen_prijemci(rnd, osoby, kolik=10): |
|
|
def gen_prijemci(rnd, osoby, kolik=10): |
|
|
prijemci = [] |
|
|
prijemci = [] |
|
|
osoby = [] |
|
|
for i in rnd.sample(osoby, kolik): |
|
|
for i in range(kolik): |
|
|
prijemci.append(Prijemce.objects.create(osoba=i)) |
|
|
osoby.append(rnd.choice(osoby)) |
|
|
|
|
|
for i in range(kolik): |
|
|
|
|
|
prijemci.append(Prijemce.objects.create(osoba=osoby[i])) |
|
|
|
|
|
return prijemci |
|
|
return prijemci |
|
|
|
|
|
|
|
|
def gen_organizatori(rnd, osoby, last_rocnik, users): |
|
|
def gen_organizatori(rnd, osoby, last_rocnik, users): |
|
@ -153,7 +150,7 @@ def gen_ulohy_do_cisla(rnd, ci, organizatori, resitele, slovnik_cisel, size): |
|
|
# atributy třídy Problem |
|
|
# atributy třídy Problem |
|
|
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(zamereni, 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), |
|
@ -178,9 +175,12 @@ def gen_ulohy_do_cisla(rnd, ci, organizatori, resitele, slovnik_cisel, size): |
|
|
) |
|
|
) |
|
|
vzorak = TextNode.objects.create(text = text_vzoraku) |
|
|
vzorak = TextNode.objects.create(text = text_vzoraku) |
|
|
uloha_vzorak = UlohaVzorakNode.objects.create(uloha=p, first_child = vzorak) |
|
|
uloha_vzorak = UlohaVzorakNode.objects.create(uloha=p, first_child = vzorak) |
|
|
p.UlohaVzorakNode = uloha_vzorak |
|
|
p.ulohavzoraknode = uloha_vzorak |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
p.opravovatele = rnd.sample(organizatori, poc_op) |
|
|
for org in rnd.sample(organizatori, poc_op): |
|
|
|
|
|
p.opravovatele_ulohas.objects.create(org) |
|
|
|
|
|
# p.opravovatele.set(rnd.sample(organizatori,poc_op)) |
|
|
p.save() |
|
|
p.save() |
|
|
|
|
|
|
|
|
# reseni ulohy |
|
|
# reseni ulohy |
|
@ -229,6 +229,7 @@ def gen_rocniky(last_rocnik, size): |
|
|
for ri in range(min(last_rocnik - size, 1), last_rocnik + 1): |
|
|
for ri in range(min(last_rocnik - size, 1), last_rocnik + 1): |
|
|
rocnik = 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) |
|
|
node2 = RocnikNode.objects.create(rocnik = rocnik, succ = node) |
|
|
|
|
|
rocnik.save() |
|
|
node = node2 |
|
|
node = node2 |
|
|
rocniky.append(rocnik) |
|
|
rocniky.append(rocnik) |
|
|
return rocniky |
|
|
return rocniky |
|
@ -253,7 +254,7 @@ def gen_konfery(rnd, reseni, organizatori, ucastnici, soustredeni): |
|
|
konferanode.save() |
|
|
konferanode.save() |
|
|
return konfery |
|
|
return konfery |
|
|
|
|
|
|
|
|
def gen_cisla(rocniky): |
|
|
def gen_cisla(rnd, rocniky): |
|
|
slovnik_rocnik_cisla = {} |
|
|
slovnik_rocnik_cisla = {} |
|
|
for rocnik in rocniky: |
|
|
for rocnik in rocniky: |
|
|
otec = True |
|
|
otec = True |
|
@ -266,11 +267,11 @@ def gen_cisla(rocniky): |
|
|
# další po dvou měsících (což je rozumná aproximace) |
|
|
# další po dvou měsících (což je rozumná aproximace) |
|
|
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(r.prvni_rok + mesic_vydani // 12, |
|
|
vydano = datetime.date(rocnik.prvni_rok + mesic_vydani // 12, |
|
|
mesic_vydani, |
|
|
(mesic_vydani - 1) % 12 + 1, |
|
|
rnd.randint(1, 28)) |
|
|
rnd.randint(1, 28)) |
|
|
deadline = datetime.date(r.prvni_rok + (mesic_vydani + 2) // 12, |
|
|
deadline = datetime.date(rocnik.prvni_rok + (mesic_vydani + 2) // 12, |
|
|
mesic_vydani + 2, |
|
|
(mesic_vydani + 1) % 12 + 1, |
|
|
rnd.randint(1, 28)) |
|
|
rnd.randint(1, 28)) |
|
|
|
|
|
|
|
|
# posledni 2 cisla v rocniku nemaji deadline |
|
|
# posledni 2 cisla v rocniku nemaji deadline |
|
@ -288,7 +289,7 @@ def gen_cisla(rocniky): |
|
|
node = node2 |
|
|
node = node2 |
|
|
if otec: |
|
|
if otec: |
|
|
otec = False |
|
|
otec = False |
|
|
rocnik.RocnikNode.first_child = node |
|
|
rocnik.rocniknode.first_child = node |
|
|
rocnik.save() |
|
|
rocnik.save() |
|
|
|
|
|
|
|
|
slovnik_cisel[ci] = cislo |
|
|
slovnik_cisel[ci] = cislo |
|
@ -358,57 +359,57 @@ def gen_ulohy_k_tematum(rocniky, slovnik_rocnik_cisla, slovnik_rocnik_temata): # |
|
|
for rocnik in rocniky: |
|
|
for rocnik in rocniky: |
|
|
slovnik_cisel = slovnik_rocnik_cisla[rocnik] |
|
|
slovnik_cisel = slovnik_rocnik_cisla[rocnik] |
|
|
slovnik_temat = slovnik_rocnik_temata[rocnik] |
|
|
slovnik_temat = slovnik_rocnik_temata[rocnik] |
|
|
for ci, cislo in slovnik_cisel.items()[:-2]: |
|
|
for ci, cislo in slovnik_cisel.items()[:-2]: |
|
|
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: |
|
|
continue |
|
|
continue |
|
|
else: |
|
|
else: |
|
|
tema = mozna_tema_vcn.tema |
|
|
tema = mozna_tema_vcn.tema |
|
|
|
|
|
|
|
|
if not slovnik_temat[int(tema.kod)][1] >= ci+2: |
|
|
if not slovnik_temat[int(tema.kod)][1] >= ci+2: |
|
|
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, |
|
|
opravovatele=rnd.sample(organizatori, poc_op), |
|
|
opravovatele=rnd.sample(organizatori, poc_op), |
|
|
kod=str(i), |
|
|
kod=str(i), |
|
|
cislo_zadani=cislo, |
|
|
cislo_zadani=cislo, |
|
|
cislo_reseni=slovnik_cisel[ci+2], |
|
|
cislo_reseni=slovnik_cisel[ci+2], |
|
|
cislo_deadline=slovnik_cisel[ci+2], |
|
|
cislo_deadline=slovnik_cisel[ci+2], |
|
|
max_body = rnd.randint(1, 8) |
|
|
max_body = rnd.randint(1, 8) |
|
|
) |
|
|
) |
|
|
p.zadani = " ".join([rnd.choice(sloveso), rnd.choice(koho), |
|
|
p.zadani = " ".join([rnd.choice(sloveso), rnd.choice(koho), |
|
|
rnd.choice(ceho), rnd.choice(jmeno), rnd.choice(kde)]) |
|
|
rnd.choice(ceho), rnd.choice(jmeno), rnd.choice(kde)]) |
|
|
uloha_zadani = UlohaZadaniNode.objects.create(uloha=p) |
|
|
uloha_zadani = UlohaZadaniNode.objects.create(uloha=p) |
|
|
p.UlohaZadaniNode = uloha_zadani |
|
|
p.UlohaZadaniNode = uloha_zadani |
|
|
otec_syn(mozna_tema_vcn, uloha_zadani) |
|
|
otec_syn(mozna_tema_vcn, 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) |
|
|
) |
|
|
) |
|
|
vzorak = TextNode.objects.create(text = text_vzoraku) |
|
|
vzorak = TextNode.objects.create(text = text_vzoraku) |
|
|
uloha_vzorak = UlohaVzorakNode.objects.create(uloha=p, first_child = vzorak) |
|
|
uloha_vzorak = UlohaVzorakNode.objects.create(uloha=p, first_child = vzorak) |
|
|
p.UlohaVzorakNode = uloha_vzorak |
|
|
p.UlohaVzorakNode = uloha_vzorak |
|
|
#res_tema_vcn = |
|
|
#res_tema_vcn = |
|
|
res_tema_vcn = slovnik_cisel[ci+2].CisloNode.first_child |
|
|
res_tema_vcn = slovnik_cisel[ci+2].CisloNode.first_child |
|
|
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 |
|
|
|
|
|
|
|
|
def otec_syn(otec, syn): |
|
|
def otec_syn(otec, syn): |
|
|
bratr = otec.first_child |
|
|
bratr = otec.first_child |
|
@ -423,10 +424,6 @@ def create_test_data(size = 6, rnd = None): |
|
|
# pevna pseudo-nahodnost |
|
|
# pevna pseudo-nahodnost |
|
|
rnd = rnd or random.Random(x=42) |
|
|
rnd = rnd or random.Random(x=42) |
|
|
|
|
|
|
|
|
gen_rocniky(25, 10) |
|
|
|
|
|
gen_soustredeni(rnd, [], []) |
|
|
|
|
|
return |
|
|
|
|
|
|
|
|
|
|
|
# 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") |
|
@ -449,6 +446,7 @@ def create_test_data(size = 6, rnd = None): |
|
|
|
|
|
|
|
|
# skoly |
|
|
# skoly |
|
|
skoly = gen_skoly() |
|
|
skoly = gen_skoly() |
|
|
|
|
|
#TODO Generovat soustredeni konfery |
|
|
|
|
|
|
|
|
# osoby |
|
|
# osoby |
|
|
osoby = gen_osoby(rnd, size) |
|
|
osoby = gen_osoby(rnd, size) |
|
@ -469,7 +467,7 @@ def create_test_data(size = 6, rnd = None): |
|
|
rocniky = gen_rocniky(last_rocnik, size) |
|
|
rocniky = gen_rocniky(last_rocnik, size) |
|
|
|
|
|
|
|
|
# cisla |
|
|
# cisla |
|
|
slovnik_rocnik_cisla = gen_cisla(rocniky) |
|
|
slovnik_rocnik_cisla = gen_cisla(rnd, rocniky) |
|
|
|
|
|
|
|
|
# generování obyčejných úloh do čísel |
|
|
# generování obyčejných úloh do čísel |
|
|
for rocnik in rocniky: |
|
|
for rocnik in rocniky: |
|
|