Progres na testdatech
This commit is contained in:
parent
e7e57140af
commit
7c14bf4100
1 changed files with 70 additions and 72 deletions
|
@ -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,58 +359,58 @@ 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
|
||||||
syn.succ = bratr
|
syn.succ = bratr
|
||||||
|
@ -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:
|
||||||
|
|
Loading…
Reference in a new issue