69 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import logging
 | |
| import datetime
 | |
| import random
 | |
| from typing import Sequence
 | |
| 
 | |
| import lorem
 | |
| 
 | |
| from .models import Soustredeni, Konfera
 | |
| from tvorba.models import Rocnik
 | |
| 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=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],
 | |
| 		soustredeni: Sequence[Soustredeni],
 | |
| 		resitele: Sequence[pm.Resitel] = None,
 | |
| 		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 = resitele if resitele else 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
 |