Browse Source

Progres na testdatech

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

142
seminar/testutils.py

@ -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…
Cancel
Save