Browse Source

Progres na testdatech

export_seznamu_prednasek
Martin Z. (Zimamazim) 6 years ago
parent
commit
7c14bf4100
  1. 140
      seminar/testutils.py

140
seminar/testutils.py

@ -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,57 +359,57 @@ 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
@ -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…
Cancel
Save