Web M&M
https://mam.matfyz.cz
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
2.7 KiB
69 lines
2.7 KiB
import logging
|
|
import datetime
|
|
import random
|
|
from typing import Sequence
|
|
|
|
import lorem
|
|
|
|
from .models import Soustredeni, Konfera
|
|
import seminar.models.tvorba as am
|
|
import personalni.models as pm
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def gen_soustredeni(
|
|
size: int,
|
|
resitele: Sequence[pm.Resitel],
|
|
organizatori: Sequence[pm.Organizator],
|
|
rnd: random.Random = None,
|
|
) -> Sequence[Soustredeni]:
|
|
logger.info('Generuji soustředění (size={})...')
|
|
rnd = rnd or random.Random(x=42)
|
|
|
|
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))
|
|
working_sous = Soustredeni.objects.create(
|
|
rocnik=am.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', 'podzimni', 'vikend']),
|
|
datum_zacatku=datum_zacatku,
|
|
datum_konce=datum_zacatku + datetime.timedelta(days=7))
|
|
ucastnici = rnd.sample(resitele, min(len(resitele), 20))
|
|
working_sous.ucastnici.set(ucastnici)
|
|
orgove_vyber = rnd.sample(organizatori, min(len(organizatori), 20))
|
|
working_sous.organizatori.set(orgove_vyber)
|
|
working_sous.save()
|
|
soustredeni.append(working_sous)
|
|
return soustredeni
|
|
|
|
|
|
def gen_konfery(
|
|
size: int,
|
|
organizatori: Sequence[pm.Organizator],
|
|
resitele: Sequence[pm.Resitel],
|
|
soustredeni: Sequence[Soustredeni],
|
|
rnd: random.Random = None,
|
|
) -> Sequence[Konfera]:
|
|
logger.info('Generuji konfery (size={})...'.format(size))
|
|
rnd = rnd or random.Random(x=42)
|
|
|
|
konfery = []
|
|
for _ in range(1, size): # FIXME Tu range si změňte jak chcete, nevím, co přesně znamená size (asi Anet?)
|
|
# Anet: size je parametr udávající velikost testovacích dat a dá se pomocí ní škálovat,
|
|
# kolik dat se nageneruje
|
|
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(),
|
|
garant=rnd.choice(organizatori),
|
|
soustredeni=rnd.choice(soustredeni),
|
|
typ_prezentace=rnd.choice(['veletrh', 'prezentace']))
|
|
ucastnici_sous = list(konfera.soustredeni.ucastnici.all())
|
|
ucastnici = rnd.sample(ucastnici_sous, min(len(ucastnici_sous), rnd.randint(3, 6)))
|
|
konfera.ucastnici.set(ucastnici)
|
|
konfera.save()
|
|
konfery.append(konfera)
|
|
return konfery
|
|
|