|
|
@ -6,6 +6,7 @@ import lorem |
|
|
|
import django.contrib.auth |
|
|
|
from django.db import transaction |
|
|
|
import unidecode |
|
|
|
import logging |
|
|
|
|
|
|
|
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, Hodnoceni, UlohaZadaniNode, Novinky |
|
|
|
|
|
|
@ -15,7 +16,11 @@ from django.contrib.sites.models import Site |
|
|
|
User = django.contrib.auth.get_user_model() |
|
|
|
zlinska = None # tohle bude speciální škola, které později dodáme kontaktní osobu |
|
|
|
|
|
|
|
logger = logging.getLogger(__name__) |
|
|
|
|
|
|
|
def gen_osoby(rnd, size): |
|
|
|
logger.info('Generuji osoby (size={})...'.format(size)) |
|
|
|
|
|
|
|
jmena_m = ['Aleš', 'Tomáš', 'Martin', 'Jakub', 'Petr', 'Lukáš', 'Cyril', 'Pavel Karel'] |
|
|
|
jmena_f = ['Eva', 'Karolína', 'Zuzana', 'Sylvie', 'Iva', 'Jana', 'Marie', |
|
|
|
'Marta Iva', 'Shu Shan'] |
|
|
@ -66,6 +71,8 @@ def gen_osoby(rnd, size): |
|
|
|
|
|
|
|
|
|
|
|
def gen_skoly(): #TODO někdy to přepsat, aby jich bylo více |
|
|
|
logger.info('Generuji školy...') |
|
|
|
|
|
|
|
skoly = [] |
|
|
|
prvnizs = Skola.objects.create(mesto='Praha', stat='CZ', psc='101 00', |
|
|
|
ulice='Krátká 5', nazev='První ZŠ', je_zs=True, je_ss=False) |
|
|
@ -89,6 +96,8 @@ def gen_skoly(): #TODO někdy to přepsat, aby jich bylo více |
|
|
|
return skoly |
|
|
|
|
|
|
|
def gen_resitele(rnd, osoby, skoly): |
|
|
|
logger.info('Generuji řešitele...') |
|
|
|
|
|
|
|
resitele = [] |
|
|
|
for os in osoby: |
|
|
|
rand = rnd.randint(0, 8) |
|
|
@ -99,12 +108,14 @@ def gen_resitele(rnd, osoby, skoly): |
|
|
|
return resitele |
|
|
|
|
|
|
|
def gen_prijemci(rnd, osoby, kolik=10): |
|
|
|
logger.info('Generuji příjemce (kolik={})...'.format(kolik)) |
|
|
|
prijemci = [] |
|
|
|
for i in rnd.sample(osoby, kolik): |
|
|
|
prijemci.append(Prijemce.objects.create(osoba=i)) |
|
|
|
return prijemci |
|
|
|
|
|
|
|
def gen_organizatori(rnd, osoby, last_rocnik, users): |
|
|
|
logger.info('Generuji organizátory...') |
|
|
|
organizatori = [] |
|
|
|
for os in osoby: |
|
|
|
rand = rnd.randint(0, 8) |
|
|
@ -121,6 +132,8 @@ def gen_organizatori(rnd, osoby, last_rocnik, users): |
|
|
|
return organizatori |
|
|
|
|
|
|
|
def gen_ulohy_do_cisla(rnd, organizatori, resitele, rocnik_cisla, rocniky, size): |
|
|
|
logger.info('Generuji úlohy do čísla (size={})...'.format(size)) |
|
|
|
|
|
|
|
# ulohy resene v cisle |
|
|
|
jaka = ["Šachová", "Černá", "Větrná", "Dlouhá", "Křehká", "Rychlá", |
|
|
|
"Zákeřná", "Fyzikální"] |
|
|
@ -219,6 +232,8 @@ def gen_ulohy_do_cisla(rnd, organizatori, resitele, rocnik_cisla, rocniky, size) |
|
|
|
return |
|
|
|
|
|
|
|
def gen_soustredeni(rnd, resitele, organizatori): |
|
|
|
logger.info('Generuji soustředění...') |
|
|
|
|
|
|
|
soustredeni = [] |
|
|
|
for _ in range(1, 10): #FIXME Tu range si změňte jak chcete, nevím, co přesně znamená size (asi Anet?) |
|
|
|
datum_zacatku=datetime.date(rnd.randint(2000, 2020), rnd.randint(1, 12), rnd.randint(1, 28)) |
|
|
@ -242,6 +257,8 @@ def gen_soustredeni(rnd, resitele, organizatori): |
|
|
|
return soustredeni |
|
|
|
|
|
|
|
def gen_rocniky(last_rocnik, size): |
|
|
|
logger.info('Generuji ročníky (size={})...'.format(size)) |
|
|
|
|
|
|
|
rocniky = [] |
|
|
|
node = None |
|
|
|
for ri in range(min(last_rocnik - size, 1), last_rocnik + 1): |
|
|
@ -253,6 +270,8 @@ def gen_rocniky(last_rocnik, size): |
|
|
|
return rocniky |
|
|
|
|
|
|
|
def gen_konfery(size, rnd, organizatori, resitele, soustredeni): |
|
|
|
logger.info('Generuji konfery (size={})...'.format(size)) |
|
|
|
|
|
|
|
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( |
|
|
@ -275,6 +294,8 @@ def gen_konfery(size, rnd, organizatori, resitele, soustredeni): |
|
|
|
return konfery |
|
|
|
|
|
|
|
def gen_cisla(rnd, rocniky): |
|
|
|
logger.info('Generuji čísla...') |
|
|
|
|
|
|
|
rocnik_cisla = [] |
|
|
|
for rocnik in rocniky: |
|
|
|
otec = True |
|
|
@ -318,6 +339,8 @@ def gen_cisla(rnd, rocniky): |
|
|
|
return rocnik_cisla |
|
|
|
|
|
|
|
def gen_temata(rnd, rocniky, rocnik_cisla, organizatori): |
|
|
|
logger.info('Generuji témata...') |
|
|
|
|
|
|
|
jake = ["Hravé", "Fyzikální", "Nejlepší", "Totálně masakrální", |
|
|
|
"Šokující", "Magnetické", "Modré", "Překvapivé", |
|
|
|
"Plasmatické", "Novoroční"] |
|
|
@ -361,6 +384,8 @@ def gen_temata(rnd, rocniky, rocnik_cisla, organizatori): |
|
|
|
|
|
|
|
|
|
|
|
def gen_ulohy_k_tematum(rnd, rocniky, rocnik_cisla, rocnik_temata, organizatori): |
|
|
|
logger.info('Generuji úlohy k tématům...') |
|
|
|
|
|
|
|
# ulohy resene v cisle |
|
|
|
jaka = ["Šachová", "Černá", "Větrná", "Dlouhá", "Křehká", "Rychlá", |
|
|
|
"Zákeřná", "Fyzikální"] |
|
|
@ -457,6 +482,8 @@ def gen_ulohy_k_tematum(rnd, rocniky, rocnik_cisla, rocnik_temata, organizatori) |
|
|
|
return |
|
|
|
|
|
|
|
def gen_novinky(rnd, organizatori): |
|
|
|
logger.info('Generuji novinky...') |
|
|
|
|
|
|
|
|
|
|
|
jake = ["zábavné", "veselé", "dobrodružné", "skvělé"] |
|
|
|
co = ["soustředění", "Fyziklání", "víkendové setkání"] |
|
|
@ -478,6 +505,8 @@ def otec_syn(otec, syn): |
|
|
|
|
|
|
|
@transaction.atomic |
|
|
|
def create_test_data(size = 6, rnd = None): |
|
|
|
logger.info('Vyrábím testovací data (size={})...'.format(size)) |
|
|
|
|
|
|
|
assert size >= 1 |
|
|
|
# pevna pseudo-nahodnost |
|
|
|
rnd = rnd or random.Random(x=42) |
|
|
|