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
|
||||
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.sites.models import Site
|
||||
|
@ -102,11 +102,8 @@ def gen_resitele(rnd, osoby, skoly):
|
|||
|
||||
def gen_prijemci(rnd, osoby, kolik=10):
|
||||
prijemci = []
|
||||
osoby = []
|
||||
for i in range(kolik):
|
||||
osoby.append(rnd.choice(osoby))
|
||||
for i in range(kolik):
|
||||
prijemci.append(Prijemce.objects.create(osoba=osoby[i]))
|
||||
for i in rnd.sample(osoby, kolik):
|
||||
prijemci.append(Prijemce.objects.create(osoba=i))
|
||||
return prijemci
|
||||
|
||||
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
|
||||
nazev=" ".join([rnd.choice(jaka), rnd.choice(co)]),
|
||||
stav=Problem.STAV_ZADANY,
|
||||
zamereni=rnd.sample(zamereni, poc_oboru),
|
||||
zamereni=rnd.sample(["M", "F", "I", "O", "B"], poc_oboru),
|
||||
autor=rnd.choice(organizatori),
|
||||
garant=rnd.choice(organizatori),
|
||||
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)
|
||||
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()
|
||||
|
||||
# reseni ulohy
|
||||
|
@ -229,6 +229,7 @@ def gen_rocniky(last_rocnik, size):
|
|||
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
|
||||
|
@ -253,7 +254,7 @@ def gen_konfery(rnd, reseni, organizatori, ucastnici, soustredeni):
|
|||
konferanode.save()
|
||||
return konfery
|
||||
|
||||
def gen_cisla(rocniky):
|
||||
def gen_cisla(rnd, rocniky):
|
||||
slovnik_rocnik_cisla = {}
|
||||
for rocnik in rocniky:
|
||||
otec = True
|
||||
|
@ -266,11 +267,11 @@ def gen_cisla(rocniky):
|
|||
# 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(r.prvni_rok + mesic_vydani // 12,
|
||||
mesic_vydani,
|
||||
vydano = datetime.date(rocnik.prvni_rok + mesic_vydani // 12,
|
||||
(mesic_vydani - 1) % 12 + 1,
|
||||
rnd.randint(1, 28))
|
||||
deadline = datetime.date(r.prvni_rok + (mesic_vydani + 2) // 12,
|
||||
mesic_vydani + 2,
|
||||
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
|
||||
|
@ -288,7 +289,7 @@ def gen_cisla(rocniky):
|
|||
node = node2
|
||||
if otec:
|
||||
otec = False
|
||||
rocnik.RocnikNode.first_child = node
|
||||
rocnik.rocniknode.first_child = node
|
||||
rocnik.save()
|
||||
|
||||
slovnik_cisel[ci] = cislo
|
||||
|
@ -358,58 +359,58 @@ def gen_ulohy_k_tematum(rocniky, slovnik_rocnik_cisla, slovnik_rocnik_temata): #
|
|||
for rocnik in rocniky:
|
||||
slovnik_cisel = slovnik_rocnik_cisla[rocnik]
|
||||
slovnik_temat = slovnik_rocnik_temata[rocnik]
|
||||
for ci, cislo in slovnik_cisel.items()[:-2]:
|
||||
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:
|
||||
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
|
||||
|
||||
for ci, cislo in slovnik_cisel.items()[:-2]:
|
||||
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:
|
||||
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
|
||||
|
@ -423,10 +424,6 @@ def create_test_data(size = 6, rnd = None):
|
|||
# pevna pseudo-nahodnost
|
||||
rnd = rnd or random.Random(x=42)
|
||||
|
||||
gen_rocniky(25, 10)
|
||||
gen_soustredeni(rnd, [], [])
|
||||
return
|
||||
|
||||
# static URL stranky
|
||||
# FIXME: nakopirovat sem vsechny z produkcni databaze
|
||||
s = Site.objects.filter(name="example.com")
|
||||
|
@ -449,6 +446,7 @@ def create_test_data(size = 6, rnd = None):
|
|||
|
||||
# skoly
|
||||
skoly = gen_skoly()
|
||||
#TODO Generovat soustredeni konfery
|
||||
|
||||
# osoby
|
||||
osoby = gen_osoby(rnd, size)
|
||||
|
@ -469,7 +467,7 @@ def create_test_data(size = 6, rnd = None):
|
|||
rocniky = gen_rocniky(last_rocnik, size)
|
||||
|
||||
# cisla
|
||||
slovnik_rocnik_cisla = gen_cisla(rocniky)
|
||||
slovnik_rocnik_cisla = gen_cisla(rnd, rocniky)
|
||||
|
||||
# generování obyčejných úloh do čísel
|
||||
for rocnik in rocniky:
|
||||
|
|
Loading…
Reference in a new issue