testutils: rozbitá verze kde padají vcn, neznámo proč
This commit is contained in:
		
							parent
							
								
									8604ef7b4c
								
							
						
					
					
						commit
						7332466a31
					
				
					 1 changed files with 29 additions and 5 deletions
				
			
		|  | @ -19,6 +19,13 @@ zlinska = None # tohle bude speciální škola, které později dodáme kontaktn | |||
| 
 | ||||
| logger = logging.getLogger(__name__) | ||||
| 
 | ||||
| # testuje unikátnost vygenerovaného jména | ||||
| def __unikatni_jmeno(osoby, jmeno, prijmeni): | ||||
| 	for os in osoby: | ||||
| 		if os.jmeno == jmeno and os.prijmeni == prijmeni: | ||||
| 			return 0 | ||||
| 	else: return 1 | ||||
| 
 | ||||
| def gen_osoby(rnd, size): | ||||
| 	logger.info('Generuji osoby (size={})...'.format(size)) | ||||
| 
 | ||||
|  | @ -48,6 +55,19 @@ def gen_osoby(rnd, size): | |||
| 		pohlavi = rnd.randint(0,1) | ||||
| 		jmeno = rnd.choice([jmena_m, jmena_f][pohlavi]) | ||||
| 		prijmeni = rnd.choice([prijmeni_m, prijmeni_f][pohlavi]) | ||||
| 		pokusy = 0 | ||||
| 		max_pokusy = 120*size | ||||
| 		while (not __unikatni_jmeno and pokusy < max_pokusy): | ||||
| 		# pokud jméno a příjmení není unikátní, zkoušíme generovat nová | ||||
| 		# do daného limitu (abychom se nezacyklili do nekonečna při málo jménech a příjmeních | ||||
| 		# ze kterých se generuje) | ||||
| 			jmeno = rnd.choice([jmena_m, jmena_f][pohlavi]) | ||||
| 			prijmeni = rnd.choice([prijmeni_m, prijmeni_f][pohlavi]) | ||||
| 			pokusy = pokusy + 1 | ||||
| 		if pokusy >= max_pokusy: | ||||
| 			print("Chyba, na danou velikost testovacích dat příliš málo možných" | ||||
| 				" jmen a příjmení") | ||||
| 			exit | ||||
| 		prezdivka = rnd.choice(prezdivky) | ||||
| 		email = "@".join([unidecode.unidecode(jmeno), rnd.choice(domain)]) | ||||
| 		telefon = "".join([str(rnd.choice([k for k in range(10)])) for i in range(9)]) | ||||
|  | @ -165,11 +185,12 @@ def gen_ulohy_do_cisla(rnd, organizatori, resitele, rocnik_cisla, rocniky, size) | |||
| 	k = 0 | ||||
| 	for rocnik in rocniky: | ||||
| 		k+=1 | ||||
| 		print("Generuji {}. číslo.".format(k)) | ||||
| 		cisla = rocnik_cisla[k-1] | ||||
| 		for ci in range(3, len(cisla)+1): # pro všechna čísla | ||||
| 			resitele_size = round(7/8 * 30 * size) # očekáváný celkový počet řešitelů | ||||
| 			poc_res = rnd.randint(round(resitele_size/8), round(3*resitele_size/4)) | ||||
|  			# dané číslo řeší něco mezi osminou a tříčtvrtinou všech řešitelů | ||||
| 			poc_res = rnd.randint(round(resitele_size/8), round(resitele_size/4)) | ||||
|  			# dané číslo řeší něco mezi osminou a čtvrtinou všech řešitelů | ||||
| 			# (náhodná hausnumera, možno změnit) | ||||
| 			# účelem je, aby se řešení generovala z menší množiny řešitelů a tedy | ||||
| 			# bylo více řešení od jednoho řešitele daného čísla | ||||
|  | @ -228,9 +249,10 @@ def gen_ulohy_do_cisla(rnd, organizatori, resitele, rocnik_cisla, rocniky, size) | |||
| 				p.save() | ||||
| 
 | ||||
| 				# generování řešení | ||||
| 				poc_reseni = rnd.randint(size // 2, size * 2) | ||||
| 				# generujeme náhodný počet řešení | ||||
| 				poc_reseni = rnd.randint(poc_res, poc_res * 4) | ||||
| 				# generujeme náhodný počet řešení vzhledem k počtu řešitelů čísla | ||||
| 				for ri in range(poc_reseni): | ||||
| 					#print("Generuji {}-té řešení".format(ri)) | ||||
| 					if rnd.randint(1, 10) == 6: | ||||
| 					# cca desetina řešení od více řešitelů | ||||
| 						res_vyber = rnd.sample(resitele_cisla, rnd.randint(2, 5)) | ||||
|  | @ -432,8 +454,10 @@ def gen_ulohy_k_tematum(rnd, rocniky, rocnik_cisla, rocnik_temata, organizatori) | |||
| 		cisla = rocnik_cisla[k-1] | ||||
| 		temata = rocnik_temata[k-1] | ||||
| 		for ci in range(len(cisla)): | ||||
| 			print("Generuji {}-té číslo".format(ci)) | ||||
| 			cislo = cisla[ci-1]	 | ||||
| 			mozna_tema_vcn = cislo.cislonode.first_child | ||||
| 			# kdybyste nad tím někdo taky přemýšleli, tak vcn == VCisleNode :) | ||||
| 			while mozna_tema_vcn != None: | ||||
| 				if type(mozna_tema_vcn) != TemaVCisleNode: | ||||
| 					mozna_tema_vcn = mozna_tema_vcn.succ | ||||
|  | @ -521,7 +545,7 @@ def gen_novinky(rnd, organizatori): | |||
| 				     | ||||
| def otec_syn(otec, syn): | ||||
| 	bratr = otec.first_child | ||||
| 	syn.succ = bratr | ||||
| 	syn.ucc = bratr | ||||
| 	otec.first_child = syn | ||||
| 	syn.save() | ||||
| 	otec.save() | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Anet
						Anet