Merge branch 'data_migrations' of gimli.ms.mff.cuni.cz:/akce/mam/git/mamweb into data_migrations
This commit is contained in:
commit
deca544de5
2 changed files with 104 additions and 37 deletions
|
@ -49,3 +49,7 @@ Werkzeug==0.14.1
|
|||
|
||||
# uWSGI
|
||||
uWSGI==2.0.17.1
|
||||
|
||||
# Potřeba pro test data
|
||||
|
||||
lorem
|
||||
|
|
|
@ -2,11 +2,12 @@
|
|||
|
||||
import datetime
|
||||
import random
|
||||
import lorem
|
||||
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, 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.sites.models import Site
|
||||
|
@ -206,22 +207,24 @@ def gen_ulohy_do_cisla(rnd, cislo, organizatori, resitele, slovnik_cisel, size):
|
|||
)
|
||||
return
|
||||
|
||||
def gen_soustredeni():
|
||||
sousy = []
|
||||
for sousi in range(1, size): #FIXME Tu range si změňte jak chcete, nevím, co přesně znamená size (asi Anet?)
|
||||
def gen_soustredeni(rnd, resitele, organizatori):
|
||||
soustredeni = []
|
||||
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))
|
||||
working_sous = Soustredeni.objects.create(rocnik=Rocnik.objects.order_by('?').first(),
|
||||
verejne_db=rnd.choice([True, False]),
|
||||
misto=rnd.choice(['Kremrolovice', 'Indiánov', 'U zmzliny', 'Vafláreň', 'Větrník', 'Horní Rakvička', 'Dolní cheesecake']),
|
||||
datum_zacatku=datum_zacatku,
|
||||
datum_konce=datum_zacatku + datetime.timedelta(weeks=1))
|
||||
working_sous = Soustredeni.objects.create(
|
||||
rocnik=Rocnik.objects.order_by('?').first(),
|
||||
verejne_db=rnd.choice([True, False]),
|
||||
misto=rnd.choice(['Kremrolovice', 'Indiánov', 'U zmzliny', 'Vafláreň', 'Větrník', 'Horní Rakvička', 'Dolní cheesecake']),
|
||||
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)):
|
||||
Soustredeni_Ucastnici.objects.create(resitel=res, soutredeni=working_sous)
|
||||
for org in rnd.sample(organizatori, min(len(organizatori), 20)):
|
||||
Soustredeni_Organizatori.objects.create(organizator=org, soutredeni=working_sous)
|
||||
working_sous.save()
|
||||
sousy.append(working_sous)
|
||||
return sousy
|
||||
soustredeni.append(working_sous)
|
||||
return soustredeni
|
||||
|
||||
def gen_rocniky(last_rocnik, size):
|
||||
rocniky = []
|
||||
|
@ -233,9 +236,30 @@ def gen_rocniky(last_rocnik, size):
|
|||
rocniky.append(rocnik)
|
||||
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):
|
||||
slovnik_rocnik_cisla = {}
|
||||
for rocnik in rocniky:
|
||||
otec = True
|
||||
slovnik_cisel = {}
|
||||
cisel = rnd.randint(4, 8)
|
||||
node = None
|
||||
|
@ -265,6 +289,10 @@ def gen_cisla(rocniky):
|
|||
)
|
||||
node2 = CisloNode.objects.create(cislo = cislo, succ = node)
|
||||
node = node2
|
||||
if otec:
|
||||
otec = False
|
||||
rocnik.RocnikNode.first_child = node
|
||||
rocnik.save()
|
||||
|
||||
slovnik_cisel[ci] = cislo
|
||||
slovnik_rocnik_cisla[rocnik] = slovnik_cisel
|
||||
|
@ -272,17 +300,19 @@ def gen_cisla(rocniky):
|
|||
|
||||
def gen_temata(rocniky, slovnik_rocnik_cisla):
|
||||
slovnik_rocnik_temata = {}
|
||||
for rocnik in rocniky:
|
||||
temata = {}
|
||||
for cislo in slovnik_r[rocnik]
|
||||
if cislo <= 3:
|
||||
jake = ["Hravé", "Fyzikální", "Nejlepší", "Totálně masakrální",
|
||||
jake = ["Hravé", "Fyzikální", "Nejlepší", "Totálně masakrální",
|
||||
"Šokující", "Magnetické", "Modré", "Překvapivé",
|
||||
"Plasmatické", "Novoroční"]
|
||||
co = ["téma", "záření", "stavení", "jiskření", "jelito",
|
||||
"drama", "kuře", "moře", "klání", "proudění", "čekání"]
|
||||
poc_oboru = rnd.randint(1, 2)
|
||||
poc_op = rnd.randint(1, 3)
|
||||
co = ["téma", "záření", "stavení", "jiskření", "jelito",
|
||||
"drama", "kuře", "moře", "klání", "proudění", "čekání"]
|
||||
poc_oboru = rnd.randint(1, 2)
|
||||
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(
|
||||
# atributy třídy Problem
|
||||
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),
|
||||
autor=rnd.choice(organizatori),
|
||||
garant=rnd.choice(organizatori),
|
||||
# FIXME: téma má kód podle čísla, až jich bude
|
||||
# více, tak udělat kód podle pořadí vygenerování
|
||||
kod=str(cislo),
|
||||
kod=str(n),
|
||||
# atributy třídy Téma
|
||||
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.save()
|
||||
temata[cislo] = t
|
||||
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:
|
||||
slovnik_cisel = slovnik_rocnik_cisla[rocnik]
|
||||
cisel = len(slovnik_cisel)
|
||||
slovnik_temat = slovnik_rocnik_temata[rocnik]
|
||||
for tema in slovnik_temat:
|
||||
for i in range(tema.
|
||||
if #TODO
|
||||
for cislo in slovnik_cisel:
|
||||
syn = cislo.CisloNode.first_child
|
||||
while syn != None:
|
||||
tema = syn.tema
|
||||
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-ci+1)]),
|
||||
"úloha {}.".format(i)]),
|
||||
nadproblem=tema,
|
||||
stav=Problem.STAV_ZADANY,
|
||||
zamereni=t.zamereni,
|
||||
autor=t.autor,
|
||||
garant=t.garant,
|
||||
zamereni=tema.zamereni,
|
||||
autor=tema.autor,
|
||||
garant=tema.garant,
|
||||
opravovatele=rnd.sample(organizatori, poc_op),
|
||||
kod=str(i),
|
||||
cislo_zadani=slovnik_cisel[ci],
|
||||
cislo_reseni=slovnik_cisel[ci+2],
|
||||
cislo_deadline=slovnik_cisel[ci+2],
|
||||
max_body = rnd.randint(1, 8))
|
||||
cislo_zadani=cislo,
|
||||
cislo_reseni=slovnik_cisel[cislo.cislo+2],
|
||||
cislo_deadline=slovnik_cisel[cislo.cislo+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)])
|
||||
|
||||
|
@ -342,6 +402,9 @@ def gen_ulohy_k_tematum(rocniky, slovnik_rocnik_cisla, slovnik_rocnik_temata):
|
|||
p.save()
|
||||
|
||||
|
||||
syn = syn.succ
|
||||
|
||||
|
||||
# vytvor text
|
||||
# vytvor TemaVCisleNode
|
||||
if (rnd.randint(1, 3) % 3 == 0):
|
||||
|
|
Loading…
Reference in a new issue