Fix výsledkovky
This commit is contained in:
		
							parent
							
								
									41f158768e
								
							
						
					
					
						commit
						0e92bc760b
					
				
					 1 changed files with 36 additions and 51 deletions
				
			
		|  | @ -278,36 +278,29 @@ def secti_body_za_cislo(cislo, aktivni_resitele, hlavni_problemy=None): | |||
| 			slovnik[ar.id] = "" | ||||
| 
 | ||||
| 		hlavni_problemy_slovnik[-1][ar.id] = "" | ||||
| 	 | ||||
| 	# vezmeme všechna řešení s body do daného čísla | ||||
| 	reseni_do_cisla = m.Reseni.objects.prefetch_related('problem', 'resitele',  | ||||
| 				'hodnoceni_set').filter(hodnoceni__cislo_body=cislo) | ||||
| 
 | ||||
| 	reseni_do_cisla = set(reseni_do_cisla) # odstranění duplikátů (pokud má řešení více ohodnocení) | ||||
| 	hodnoceni_do_cisla = m.Hodnoceni.objects.prefetch_related('problem', 'resitele', | ||||
| 				'hodnoceni_set').filter(cislo_body=cislo) | ||||
| 
 | ||||
| 	start = time.time()	 | ||||
| 	# projdeme všechna řešení do čísla a přičteme body každému řešiteli do celkových | ||||
| 	# bodů i do bodů za problém | ||||
| 	for reseni in reseni_do_cisla: | ||||
| 		 | ||||
| 		# řešení může mít více hodnocení | ||||
| 		for hodn in list(reseni.hodnoceni_set.all()): | ||||
| 			prob = hodn.problem | ||||
| 			nadproblem = hlavni_problem(prob) | ||||
| 			if ne_clanek_ne_konfera(nadproblem): | ||||
| 				nadproblem_slovnik = hlavni_problemy_slovnik[nadproblem.id] | ||||
| 			else: | ||||
| 				nadproblem_slovnik = hlavni_problemy_slovnik[-1] | ||||
| 	start = time.time() | ||||
| 
 | ||||
| 			body = hodn.body | ||||
| 	for hodnoceni in hodnoceni_do_cisla: | ||||
| 		prob = hodnoceni.problem | ||||
| 		nadproblem = hlavni_problem(prob) | ||||
| 		if ne_clanek_ne_konfera(nadproblem): | ||||
| 			nadproblem_slovnik = hlavni_problemy_slovnik[nadproblem.id] | ||||
| 		else: | ||||
| 			nadproblem_slovnik = hlavni_problemy_slovnik[-1] | ||||
| 
 | ||||
| 			# a mít více řešitelů | ||||
| 			for resitel in list(reseni.resitele.all()): | ||||
| 				if resitel not in aktivni_resitele: | ||||
| 					print("Skipping {}".format(resitel.id)) | ||||
| 					continue | ||||
| 				pricti_body(cislobody, resitel, body) | ||||
| 				pricti_body(nadproblem_slovnik, resitel, body) | ||||
| 		body = hodnoceni.body | ||||
| 
 | ||||
| 		# a mít více řešitelů | ||||
| 		for resitel in hodnoceni.reseni.resitele.all(): | ||||
| 			if resitel not in aktivni_resitele: | ||||
| 				print("Skipping {}".format(resitel.id)) | ||||
| 				continue | ||||
| 			pricti_body(cislobody, resitel, body) | ||||
| 			pricti_body(nadproblem_slovnik, resitel, body) | ||||
| 	end = time.time() | ||||
| 	print("for cykly:", end-start) | ||||
| 	return hlavni_problemy_slovnik, cislobody | ||||
|  | @ -341,35 +334,27 @@ def secti_body_za_cislo_podle_temat(cislo, aktivni_resitele, podproblemy=None, t | |||
| 
 | ||||
| 	temata = set(t.id for t in temata) | ||||
| 
 | ||||
| 	# vezmeme všechna řešení s body do daného čísla | ||||
| 	reseni_do_cisla = m.Reseni.objects.prefetch_related('problem', 'resitele', | ||||
| 		'hodnoceni_set').filter(hodnoceni__cislo_body=cislo) | ||||
| 	hodnoceni_do_cisla = m.Hodnoceni.objects.prefetch_related('problem', 'resitele', | ||||
| 															  'hodnoceni_set').filter(cislo_body=cislo) | ||||
| 
 | ||||
| 	reseni_do_cisla = set(reseni_do_cisla) # odstranění duplikátů (pokud má řešení více ohodnocení) | ||||
| 	for hodnoceni in hodnoceni_do_cisla: | ||||
| 		prob = hodnoceni.problem | ||||
| 		nadproblem = hlavni_problem(prob) | ||||
| 		if nadproblem.id in temata: | ||||
| 			nadproblem_slovnik = body_slovnik[nadproblem.id] | ||||
| 		else: | ||||
| 			nadproblem_slovnik = body_slovnik[-1] | ||||
| 
 | ||||
| 	# projdeme všechna řešení do čísla a přičteme body každému řešiteli do celkových | ||||
| 	# bodů i do bodů za problém | ||||
| 	for reseni in reseni_do_cisla: | ||||
| 		problem_slovnik = nadproblem_slovnik[prob.id] | ||||
| 
 | ||||
| 		# řešení může mít více hodnocení | ||||
| 		for hodn in list(reseni.hodnoceni_set.all()): | ||||
| 			prob = hodn.problem | ||||
| 			nadproblem = hlavni_problem(prob) | ||||
| 			if nadproblem.id in temata: | ||||
| 				nadproblem_slovnik = body_slovnik[nadproblem.id] | ||||
| 			else: | ||||
| 				nadproblem_slovnik = body_slovnik[-1] | ||||
| 		body = hodnoceni.body | ||||
| 
 | ||||
| 			problem_slovnik = nadproblem_slovnik[prob.id] | ||||
| 
 | ||||
| 			body = hodn.body | ||||
| 
 | ||||
| 			# a mít více řešitelů | ||||
| 			for resitel in reseni.resitele.all(): | ||||
| 				if resitel not in aktivni_resitele: | ||||
| 					print("Skipping {}".format(resitel.id)) | ||||
| 					continue | ||||
| 				pricti_body(problem_slovnik, resitel, body) | ||||
| 		# a mít více řešitelů | ||||
| 		for resitel in hodnoceni.reseni.resitele.all(): | ||||
| 			if resitel not in aktivni_resitele: | ||||
| 				print("Skipping {}".format(resitel.id)) | ||||
| 				continue | ||||
| 			pricti_body(problem_slovnik, resitel, body) | ||||
| 	return body_slovnik | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Jonas Havelka
						Jonas Havelka