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