testutils.py: je čas debugovat
This commit is contained in:
		
							parent
							
								
									3127dc888a
								
							
						
					
					
						commit
						7bdbbc6aee
					
				
					 1 changed files with 49 additions and 47 deletions
				
			
		|  | @ -125,10 +125,7 @@ def gen_organizatori(rnd, osoby, last_rocnik, users): | ||||||
| 					organizuje_od=od, organizuje_do=do)) | 					organizuje_od=od, organizuje_do=do)) | ||||||
| 	return organizatori | 	return organizatori | ||||||
| 
 | 
 | ||||||
| def gen_ulohy_do_cisla(rnd, cislo, organizatori, resitele, slovnik_cisel, size): | def gen_ulohy_do_cisla(rnd, ci, organizatori, resitele, slovnik_cisel, size): | ||||||
| 	''' |  | ||||||
| 	cislo = cislo cisla v rocniku, nikoli objekt Cislo |  | ||||||
| 	''' |  | ||||||
| 	# ulohy resene v cisle | 	# ulohy resene v cisle | ||||||
| 	jaka = ["Šachová", "Černá", "Větrná", "Dlouhá", "Křehká", "Rychlá",  | 	jaka = ["Šachová", "Černá", "Větrná", "Dlouhá", "Křehká", "Rychlá",  | ||||||
| 		"Zákeřná", "Fyzikální"] | 		"Zákeřná", "Fyzikální"] | ||||||
|  | @ -148,7 +145,7 @@ def gen_ulohy_do_cisla(rnd, cislo, organizatori, resitele, slovnik_cisel, size): | ||||||
| 		"sporné", "nepopsatelně jednoduché", "pokud jste na to nepřišli," | 		"sporné", "nepopsatelně jednoduché", "pokud jste na to nepřišli," | ||||||
| 		"tak jste fakt hloupí"] | 		"tak jste fakt hloupí"] | ||||||
| 				 | 				 | ||||||
| 	if cislo >= 3: #TODO nagenerovat i nody!!! | 	if ci >= 3: #TODO nagenerovat i nody!!! | ||||||
| 		for pi in range(1, ((size + 1) // 2) + 1): | 		for pi in range(1, ((size + 1) // 2) + 1): | ||||||
| 			poc_op = rnd.randint(1, 4) # počet opravovatelů | 			poc_op = rnd.randint(1, 4) # počet opravovatelů | ||||||
| 			poc_oboru = rnd.randint(1, 2) | 			poc_oboru = rnd.randint(1, 2) | ||||||
|  | @ -161,9 +158,9 @@ def gen_ulohy_do_cisla(rnd, cislo, organizatori, resitele, slovnik_cisel, size): | ||||||
| 				garant=rnd.choice(organizatori),  | 				garant=rnd.choice(organizatori),  | ||||||
| 				kod=str(pi),  | 				kod=str(pi),  | ||||||
| 				# atributy třídy Uloha | 				# atributy třídy Uloha | ||||||
| 				cislo_zadani=slovnik_cisel[cislo-2],  | 				cislo_zadani=slovnik_cisel[ci-2],  | ||||||
| 				cislo_reseni=slovnik_cisel[cislo],  | 				cislo_reseni=slovnik_cisel[ci],  | ||||||
| 				cislo_deadline=slovnik_cisel[cislo],  | 				cislo_deadline=slovnik_cisel[ci],  | ||||||
| 				max_body = rnd.randint(1, 8) | 				max_body = rnd.randint(1, 8) | ||||||
| 			) | 			) | ||||||
| 			p.zadani = " ".join( | 			p.zadani = " ".join( | ||||||
|  | @ -201,7 +198,7 @@ def gen_ulohy_do_cisla(rnd, cislo, organizatori, resitele, slovnik_cisel, size): | ||||||
| 				res.save() | 				res.save() | ||||||
| 				hod = Hodnoceni.objects.create( | 				hod = Hodnoceni.objects.create( | ||||||
| 					body=rnd.randint(0, p.max_body), | 					body=rnd.randint(0, p.max_body), | ||||||
| 					cislo_body=slovnik_cisel[cislo],  | 					cislo_body=slovnik_cisel[ci],  | ||||||
| 					reseni=res, | 					reseni=res, | ||||||
| 					problem=p | 					problem=p | ||||||
| 				) | 				) | ||||||
|  | @ -299,24 +296,21 @@ def gen_cisla(rocniky): | ||||||
| 	return slovnik_rocnik_cisla | 	return slovnik_rocnik_cisla | ||||||
| 
 | 
 | ||||||
| def gen_temata(rocniky, slovnik_rocnik_cisla): | def gen_temata(rocniky, slovnik_rocnik_cisla): | ||||||
| 	slovnik_rocnik_temata = {} | 	jake = ["Hravé", "Fyzikální", "Nejlepší", "Totálně masakrální", | ||||||
| 	for rocnik in rocniky: |  | ||||||
| 		temata = {} |  | ||||||
| 		for cislo in slovnik_r[rocnik]: |  | ||||||
| 			if cislo <= 3: |  | ||||||
| 				jake = ["Hravé", "Fyzikální", "Nejlepší", "Totálně masakrální", |  | ||||||
| 					"Šokující", "Magnetické", "Modré", "Překvapivé",  | 					"Šokující", "Magnetické", "Modré", "Překvapivé",  | ||||||
| 					"Plasmatické", "Novoroční"] | 					"Plasmatické", "Novoroční"] | ||||||
| 	co = ["téma", "záření", "stavení", "jiskření", "jelito", | 	co = ["téma", "záření", "stavení", "jiskření", "jelito", | ||||||
| 		"drama", "kuře", "moře", "klání", "proudění", "čekání"] | 					"drama", "kuře", "moře", "klání", "proudění", "čekání"] | ||||||
| 	poc_oboru = rnd.randint(1, 2) | 	poc_oboru = rnd.randint(1, 2) | ||||||
| 	poc_op = rnd.randint(1, 3) | 	poc_op = rnd.randint(1, 3)		 | ||||||
| 	n = 1 | 
 | ||||||
|  | 	slovnik_rocnik_temata = {} | ||||||
| 	for rocnik in rocniky: | 	for rocnik in rocniky: | ||||||
|  | 		n = 1 | ||||||
| 		temata = {} | 		temata = {} | ||||||
| 		slovnik_cisel = slovnik_rocnik_cisla[rocnik] | 		slovnik_cisel = slovnik_rocnik_cisla[rocnik] | ||||||
| 		for cislo in slovnik_cisel | 		for ci in slovnik_cisel: | ||||||
| 			if cislo.cislo <= 3: | 			if ci <= 3: | ||||||
| 				t = Tema.objects.create( | 				t = Tema.objects.create( | ||||||
| 					# atributy třídy Problem | 					# atributy třídy Problem | ||||||
| 					nazev=" ".join([rnd.choice(jake), rnd.choice(co)]), | 					nazev=" ".join([rnd.choice(jake), rnd.choice(co)]), | ||||||
|  | @ -330,20 +324,16 @@ def gen_temata(rocniky, slovnik_rocnik_cisla): | ||||||
| 					rocnik=rocnik | 					rocnik=rocnik | ||||||
| 				) | 				) | ||||||
| 				n+=1 | 				n+=1 | ||||||
| 				konec_tematu = rnd.randint(cislo.cislo, 7) | 				konec_tematu = min(rnd.randint(ci, 7), len(slovnik_cisel)) | ||||||
| 				for i in range(cislo.cislo, min(konec_tematu, len(slovnik_cisel))): | 				for i in range(ci, konec_tematu+1): | ||||||
| 					node = TemaVCisleNode.objects.create(tema = t) | 					node = TemaVCisleNode.objects.create(tema = t) | ||||||
| 					otec = slovnik_cisel[i].CisloNode | 					otec = slovnik_cisel[i].CisloNode | ||||||
| 					bratr = otec.first_child | 					otec_syn(otec, node) | ||||||
| 					node.succ = bratr |  | ||||||
| 					otec.first_child = node |  | ||||||
| 					node.save() |  | ||||||
| 					otec.save() |  | ||||||
| 
 | 
 | ||||||
| 				t.opravovatele=rnd.sample(organizatori, poc_op) | 				t.opravovatele=rnd.sample(organizatori, poc_op) | ||||||
| 				t.save() | 				t.save() | ||||||
| 				temata[cislo] = t | 				temata[n] = (ci, konec_tematu, t) | ||||||
| 		slovnik_rocnik_temata[tema] = temata | 		slovnik_rocnik_temata[rocnik] = temata | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def gen_ulohy_k_tematum(rocniky, slovnik_rocnik_cisla, slovnik_rocnik_temata): #Tahle funkce je nedodělaná | def gen_ulohy_k_tematum(rocniky, slovnik_rocnik_cisla, slovnik_rocnik_temata): #Tahle funkce je nedodělaná | ||||||
|  | @ -368,13 +358,17 @@ def gen_ulohy_k_tematum(rocniky, slovnik_rocnik_cisla, slovnik_rocnik_temata): # | ||||||
| 	for rocnik in rocniky: | 	for rocnik in rocniky: | ||||||
| 		slovnik_cisel = slovnik_rocnik_cisla[rocnik] | 		slovnik_cisel = slovnik_rocnik_cisla[rocnik] | ||||||
| 		slovnik_temat = slovnik_rocnik_temata[rocnik] | 		slovnik_temat = slovnik_rocnik_temata[rocnik] | ||||||
| 			for cislo in slovnik_cisel: | 			for ci, cislo in slovnik_cisel.items()[:-2]: | ||||||
| 				syn = cislo.CisloNode.first_child | 				mozna_tema_vcn = cislo.CisloNode.first_child | ||||||
| 				while syn != None: | 				while mozna_tema_vcn != None: | ||||||
| 					if type(syn) != TemaVCisleNode | 					if type(mozna_tema_vcn) != TemaVCisleNode: | ||||||
| 						continue | 						continue | ||||||
| 					else: | 					else: | ||||||
| 						tema = syn.tema | 						tema = mozna_tema_vcn.tema | ||||||
|  | 						 | ||||||
|  | 					if not slovnik_temat[int(tema.kod)][1] >= ci+2: | ||||||
|  | 						continue | ||||||
|  | 						 | ||||||
| 					for i in range(1, rnd.randint(1, 4)) | 					for i in range(1, rnd.randint(1, 4)) | ||||||
| 						poc_op = rnd.randint(1, 4) | 						poc_op = rnd.randint(1, 4) | ||||||
| 						poc_oboru = rnd.randint(1, 2) | 						poc_oboru = rnd.randint(1, 2) | ||||||
|  | @ -389,12 +383,15 @@ def gen_ulohy_k_tematum(rocniky, slovnik_rocnik_cisla, slovnik_rocnik_temata): # | ||||||
| 							opravovatele=rnd.sample(organizatori, poc_op),   | 							opravovatele=rnd.sample(organizatori, poc_op),   | ||||||
| 							kod=str(i),  | 							kod=str(i),  | ||||||
| 							cislo_zadani=cislo,  | 							cislo_zadani=cislo,  | ||||||
| 							cislo_reseni=slovnik_cisel[cislo.cislo+2],  | 							cislo_reseni=slovnik_cisel[ci+2],  | ||||||
| 							cislo_deadline=slovnik_cisel[cislo.cislo+2],  | 							cislo_deadline=slovnik_cisel[ci+2],  | ||||||
| 							max_body = rnd.randint(1, 8) | 							max_body = rnd.randint(1, 8) | ||||||
| 						) | 						) | ||||||
| 						p.zadani = " ".join([rnd.choice(sloveso), rnd.choice(koho),  | 						p.zadani = " ".join([rnd.choice(sloveso), rnd.choice(koho),  | ||||||
| 							rnd.choice(ceho), rnd.choice(jmeno), rnd.choice(kde)]) | 							rnd.choice(ceho), rnd.choice(jmeno), rnd.choice(kde)]) | ||||||
|  | 						uloha_zadani = UlohaZadaniNode.objects.create(uloha=p) | ||||||
|  | 						p.UlohaZadaniNode = uloha_zadani | ||||||
|  | 						otec_syn(mozna_tema_vcn, uloha_zadani) | ||||||
| 						 | 						 | ||||||
| 						text_vzoraku = Text.objects.create( | 						text_vzoraku = Text.objects.create( | ||||||
| 							na_web = rnd.choice(reseni), | 							na_web = rnd.choice(reseni), | ||||||
|  | @ -403,18 +400,22 @@ def gen_ulohy_k_tematum(rocniky, slovnik_rocnik_cisla, slovnik_rocnik_temata): # | ||||||
| 						vzorak = TextNode.objects.create(text = text_vzoraku) | 						vzorak = TextNode.objects.create(text = text_vzoraku) | ||||||
| 						uloha_vzorak = UlohaVzorakNode.objects.create(uloha=p, first_child = vzorak) | 						uloha_vzorak = UlohaVzorakNode.objects.create(uloha=p, first_child = vzorak) | ||||||
| 						p.UlohaVzorakNode = uloha_vzorak | 						p.UlohaVzorakNode = uloha_vzorak | ||||||
|  | 						#res_tema_vcn =  | ||||||
|  | 						res_tema_vcn = slovnik_cisel[ci+2].CisloNode.first_child | ||||||
|  | 						while res_tema_vcn.tema != tema: | ||||||
|  | 							res_tema_vcn = res_tema_vcn.succ | ||||||
|  | 						otec_syn(res_tema_vcn, uloha_vzorak) | ||||||
|  | 						 | ||||||
| 						p.save() | 						p.save() | ||||||
| 						 |  | ||||||
| 						 |  | ||||||
| 				 | 				 | ||||||
| 				syn = syn.succ | 					mozna_tema_vcn = mozna_tema_vcn.succ | ||||||
| 				 | 				 | ||||||
| 				 | def otec_syn(otec, syn): | ||||||
| 				# vytvor text | 	bratr = otec.first_child | ||||||
| 				# vytvor TemaVCisleNode | 	syn.succ = bratr | ||||||
| 				if (rnd.randint(1, 3) % 3 == 0): | 	otec.first_child = syn | ||||||
| 					# vytvor mezicislo Node | 	syn.save() | ||||||
| 					pass | 	otec.save() | ||||||
| 
 | 
 | ||||||
| @transaction.atomic | @transaction.atomic | ||||||
| def create_test_data(size = 6, rnd = None): | def create_test_data(size = 6, rnd = None): | ||||||
|  | @ -473,8 +474,8 @@ def create_test_data(size = 6, rnd = None): | ||||||
| 	# generování obyčejných úloh do čísel | 	# generování obyčejných úloh do čísel | ||||||
| 	for rocnik in rocniky: | 	for rocnik in rocniky: | ||||||
| 		slovnik_cisel = slovnik_rocnik_cisla[rocnik] | 		slovnik_cisel = slovnik_rocnik_cisla[rocnik] | ||||||
| 		for cislo in slovnik_cisel: | 		for ci in slovnik_cisel: | ||||||
| 			gen_ulohy_do_cisla(rnd, cislo, organizatori, resitele, slovnik_cisel, size) | 			gen_ulohy_do_cisla(rnd, ci, organizatori, resitele, slovnik_cisel, size) | ||||||
| 	 | 	 | ||||||
| 	# generování témat, zatím v prvních třech číslech po jednom | 	# generování témat, zatím v prvních třech číslech po jednom | ||||||
| 	# FIXME: více témat | 	# FIXME: více témat | ||||||
|  | @ -490,6 +491,7 @@ def create_test_data(size = 6, rnd = None): | ||||||
| 			# TODO: nagenerovat konfery | 			# TODO: nagenerovat konfery | ||||||
| 			# TODO: vecpat obrázky všude, kde to jde | 			# TODO: vecpat obrázky všude, kde to jde | ||||||
| 			# TODO: nagenerovat nějaký strom nodů? | 			# TODO: nagenerovat nějaký strom nodů? | ||||||
|  | 			# TODO: mezičíslo node | ||||||
| 
 | 
 | ||||||
| 	# TODO: nahodne nagenerovat problemum reseni a prilohy reseni, hodnoceni | 	# TODO: nahodne nagenerovat problemum reseni a prilohy reseni, hodnoceni | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Tomáš Domes
						Tomáš Domes