Browse Source

Merge branch 'data_migrations' of gimli.ms.mff.cuni.cz:/akce/mam/git/mamweb into data_migrations

export_seznamu_prednasek
parent
commit
deca544de5
  1. 4
      requirements.txt
  2. 137
      seminar/testutils.py

4
requirements.txt

@ -49,3 +49,7 @@ Werkzeug==0.14.1
# uWSGI # uWSGI
uWSGI==2.0.17.1 uWSGI==2.0.17.1
# Potřeba pro test data
lorem

137
seminar/testutils.py

@ -2,11 +2,12 @@
import datetime import datetime
import random import random
import lorem
import django.contrib.auth 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, Osoba, Organizator, Prijemce, Tema, Uloha from seminar.models import Skola, Resitel, Rocnik, Cislo, Problem, Reseni, PrilohaReseni, Nastaveni, Soustredeni, Soustredeni_Ucastnici, Soustredeni_Organizatori, Osoba, Organizator, Prijemce, Tema, Uloha, Konfera, KonferaNode, Konfera_Ucastnici
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
@ -206,22 +207,24 @@ def gen_ulohy_do_cisla(rnd, cislo, organizatori, resitele, slovnik_cisel, size):
) )
return return
def gen_soustredeni(): def gen_soustredeni(rnd, resitele, organizatori):
sousy = [] soustredeni = []
for sousi in range(1, size): #FIXME Tu range si změňte jak chcete, nevím, co přesně znamená size (asi Anet?) for _ in range(1, size): #FIXME Tu range si změňte jak chcete, nevím, co přesně znamená size (asi Anet?)
datum_zacatku=datetime.date(randint(2000, 2020), randint(1, 12), radint(1, 28)) datum_zacatku=datetime.date(randint(2000, 2020), randint(1, 12), radint(1, 28))
working_sous = Soustredeni.objects.create(rocnik=Rocnik.objects.order_by('?').first(), working_sous = Soustredeni.objects.create(
verejne_db=rnd.choice([True, False]), rocnik=Rocnik.objects.order_by('?').first(),
misto=rnd.choice(['Kremrolovice', 'Indiánov', 'U zmzliny', 'Vafláreň', 'Větrník', 'Horní Rakvička', 'Dolní cheesecake']), verejne_db=rnd.choice([True, False]),
datum_zacatku=datum_zacatku, misto=rnd.choice(['Kremrolovice', 'Indiánov', 'U zmzliny', 'Vafláreň', 'Větrník', 'Horní Rakvička', 'Dolní cheesecake']),
datum_konce=datum_zacatku + datetime.timedelta(weeks=1)) typ=rnd.choice(['jarni', 'podzmini', 'vikend']),
datum_zacatku=datum_zacatku,
datum_konce=datum_zacatku + datetime.timedelta(weeks=1))
for res in rnd.sample(resitele, min(len(resitele), 20)): for res in rnd.sample(resitele, min(len(resitele), 20)):
Soustredeni_Ucastnici.objects.create(resitel=res, soutredeni=working_sous) Soustredeni_Ucastnici.objects.create(resitel=res, soutredeni=working_sous)
for org in rnd.sample(organizatori, min(len(organizatori), 20)): for org in rnd.sample(organizatori, min(len(organizatori), 20)):
Soustredeni_Organizatori.objects.create(organizator=org, soutredeni=working_sous) Soustredeni_Organizatori.objects.create(organizator=org, soutredeni=working_sous)
working_sous.save() working_sous.save()
sousy.append(working_sous) soustredeni.append(working_sous)
return sousy return soustredeni
def gen_rocniky(last_rocnik, size): def gen_rocniky(last_rocnik, size):
rocniky = [] rocniky = []
@ -233,9 +236,30 @@ def gen_rocniky(last_rocnik, size):
rocniky.append(rocnik) rocniky.append(rocnik)
return rocniky return rocniky
def gen_konfery(rnd, reseni, organizatori, ucastnici, soustredeni):
konfery = []
for _ in range(1, size): #FIXME Tu range si změňte jak chcete, nevím, co přesně znamená size (asi Anet?)
konfera = Konfera.objects.create(
nazev=rnd.choice(['Pozorování', 'Zkoumání', 'Modelování', 'Počítání', 'Zkoušení']) + rnd.choice(' vlastností', ' jevů', ' charakteristik']) + rnd.choice([' vektorových prostorů', ' kinetické terorie látek', ' molekulární biologie', ' syntentických stromů']),
anotace=lorem.paragraph(),
abstrakt=lorem.paragraph(),
organizator=rnd.choice(organizatori),
soustredeni=rnd.choice(soustredeni),
reseni=rnd.choice(reseni),
typ_prezentace=rnd.choice(['veletrh', 'prezentace']))
for res in rnd.sample(ucastnici, min(len(ucastnici), randint(3, 6))):
Konfery_Ucastnici.objects.create(resitel=res, konfera=konfera)
konfery.append(konfera)
konfera.save()
konferanode = KonferaNode.objects.create(konfera=konfera)
konferanode.save()
return konfery
def gen_cisla(rocniky): def gen_cisla(rocniky):
slovnik_rocnik_cisla = {} slovnik_rocnik_cisla = {}
for rocnik in rocniky: for rocnik in rocniky:
otec = True
slovnik_cisel = {} slovnik_cisel = {}
cisel = rnd.randint(4, 8) cisel = rnd.randint(4, 8)
node = None node = None
@ -265,6 +289,10 @@ def gen_cisla(rocniky):
) )
node2 = CisloNode.objects.create(cislo = cislo, succ = node) node2 = CisloNode.objects.create(cislo = cislo, succ = node)
node = node2 node = node2
if otec:
otec = False
rocnik.RocnikNode.first_child = node
rocnik.save()
slovnik_cisel[ci] = cislo slovnik_cisel[ci] = cislo
slovnik_rocnik_cisla[rocnik] = slovnik_cisel slovnik_rocnik_cisla[rocnik] = slovnik_cisel
@ -272,17 +300,19 @@ def gen_cisla(rocniky):
def gen_temata(rocniky, slovnik_rocnik_cisla): def gen_temata(rocniky, slovnik_rocnik_cisla):
slovnik_rocnik_temata = {} slovnik_rocnik_temata = {}
for rocnik in rocniky: jake = ["Hravé", "Fyzikální", "Nejlepší", "Totálně masakrální",
temata = {}
for cislo in slovnik_r[rocnik]
if cislo <= 3:
jake = ["Hravé", "Fyzikální", "Nejlepší", "Totálně masakrální",
"Šokující", "Magnetické", "Modré", "Překvapivé", "Šokující", "Magnetické", "Modré", "Překvapivé",
"Plasmatické", "Novoroční"] "Plasmatické", "Novoroční"]
co = ["téma", "záření", "stavení", "jiskření", "jelito", co = ["téma", "záření", "stavení", "jiskření", "jelito",
"drama", "kuře", "moře", "klání", "proudění", "čekání"] "drama", "kuře", "moře", "klání", "proudění", "čekání"]
poc_oboru = rnd.randint(1, 2) poc_oboru = rnd.randint(1, 2)
poc_op = rnd.randint(1, 3) poc_op = rnd.randint(1, 3)
n = 1
for rocnik in rocniky:
temata = {}
slovnik_cisel = slovnik_rocnik_cisla[rocnik]
for cislo in slovnik_cisel
if cislo.cislo <= 3:
t = Tema.objects.create( t = Tema.objects.create(
# atributy třídy Problem # atributy třídy Problem
nazev=" ".join([rnd.choice(jake), rnd.choice(co)]), nazev=" ".join([rnd.choice(jake), rnd.choice(co)]),
@ -290,42 +320,72 @@ def gen_temata(rocniky, slovnik_rocnik_cisla):
zamereni=rnd.sample(["M", "F", "I", "O", "B"], 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),
# FIXME: téma má kód podle čísla, až jich bude kod=str(n),
# více, tak udělat kód podle pořadí vygenerování
kod=str(cislo),
# atributy třídy Téma # atributy třídy Téma
tema_typ=rnd.choice(Tema.TEMA_CHOICES), tema_typ=rnd.choice(Tema.TEMA_CHOICES),
rocnik=rocnik) rocnik=rocnik
)
n+=1
konec_tematu = rnd.randint(cislo.cislo, 7)
for i in range(cislo.cislo, min(konec_tematu, len(slovnik_cisel))):
node = TemaVCisleNode.objects.create(tema = t)
otec = slovnik_cisel[i].CisloNode
bratr = otec.first_child
node.succ = bratr
otec.first_child = node
node.save()
otec.save()
t.opravovatele=rnd.sample(organizatori, poc_op) t.opravovatele=rnd.sample(organizatori, poc_op)
t.save() t.save()
temata[cislo] = t temata[cislo] = t
slovnik_rocnik_temata[tema] = temata slovnik_rocnik_temata[tema] = temata
def gen_ulohy_k_tematum(rocniky, slovnik_rocnik_cisla, slovnik_rocnik_temata):
def gen_ulohy_k_tematum(rocniky, slovnik_rocnik_cisla, slovnik_rocnik_temata): #Tahle funkce je nedodělaná
# ulohy resene v cisle
jaka = ["Šachová", "Černá", "Větrná", "Dlouhá", "Křehká", "Rychlá",
"Zákeřná", "Fyzikální"]
co = ["kostka", "smršť", "díra", "zrada", "toulka", "tyč",
"úloha", "blecha"]
sloveso = ["Najděte", "Spočítejte", "Zapište", "Změřte", "Odhadněte"]
koho = ["délku", "počet", "množství", "dílky"]
ceho = ["všech", "správných", "konstatních", "zelených"]
jmeno = ["řešení", "tahů", "čísel", "kalhot", "koulí", "hadů"]
kde = ["na zemi", "ve vesmíru", "ve vzduchu", "na šňůře", "v letadle"]
obor = ["M", "F", "I", "O", "B"]
reseni = ["to je přece jasné", "triviální", "omlouváme se,"
"otevřený problém", "neřešitelné", "triviálně triviální",
"použitím věty z prvního semestru na matfyzu",
"jednoduše pomocí látky z druhého semestru na matfyzu",
"netriviální aplikace diferenciálních rovnic", "zadání je vnitřně"
"sporné", "nepopsatelně jednoduché", "pokud jste na to nepřišli,"
"tak jste fakt hloupí"]
for rocnik in rocniky: for rocnik in rocniky:
slovnik_cisel = slovnik_rocnik_cisla[rocnik] slovnik_cisel = slovnik_rocnik_cisla[rocnik]
cisel = len(slovnik_cisel)
slovnik_temat = slovnik_rocnik_temata[rocnik] slovnik_temat = slovnik_rocnik_temata[rocnik]
for tema in slovnik_temat: for cislo in slovnik_cisel:
for i in range(tema. syn = cislo.CisloNode.first_child
if #TODO while syn != None:
tema = syn.tema
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-ci+1)]), "úloha {}.".format(i)]),
nadproblem=tema, nadproblem=tema,
stav=Problem.STAV_ZADANY, stav=Problem.STAV_ZADANY,
zamereni=t.zamereni, zamereni=tema.zamereni,
autor=t.autor, autor=tema.autor,
garant=t.garant, garant=tema.garant,
opravovatele=rnd.sample(organizatori, poc_op), opravovatele=rnd.sample(organizatori, poc_op),
kod=str(i), kod=str(i),
cislo_zadani=slovnik_cisel[ci], cislo_zadani=cislo,
cislo_reseni=slovnik_cisel[ci+2], cislo_reseni=slovnik_cisel[cislo.cislo+2],
cislo_deadline=slovnik_cisel[ci+2], cislo_deadline=slovnik_cisel[cislo.cislo+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)])
@ -342,6 +402,9 @@ def gen_ulohy_k_tematum(rocniky, slovnik_rocnik_cisla, slovnik_rocnik_temata):
p.save() p.save()
syn = syn.succ
# vytvor text # vytvor text
# vytvor TemaVCisleNode # vytvor TemaVCisleNode
if (rnd.randint(1, 3) % 3 == 0): if (rnd.randint(1, 3) % 3 == 0):

Loading…
Cancel
Save