Fix výsledkovky
This commit is contained in:
		
							parent
							
								
									41f158768e
								
							
						
					
					
						commit
						0e92bc760b
					
				
					 1 changed files with 36 additions and 51 deletions
				
			
		|  | @ -279,35 +279,28 @@ def secti_body_za_cislo(cislo, aktivni_resitele, hlavni_problemy=None): | ||||||
| 
 | 
 | ||||||
| 		hlavni_problemy_slovnik[-1][ar.id] = "" | 		hlavni_problemy_slovnik[-1][ar.id] = "" | ||||||
| 
 | 
 | ||||||
| 	# vezmeme všechna řešení s body do daného čísla | 	hodnoceni_do_cisla = m.Hodnoceni.objects.prefetch_related('problem', 'resitele', | ||||||
| 	reseni_do_cisla = m.Reseni.objects.prefetch_related('problem', 'resitele',  | 				'hodnoceni_set').filter(cislo_body=cislo) | ||||||
| 				'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í) |  | ||||||
| 
 | 
 | ||||||
| 	start = time.time() | 	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 hodnoceni in hodnoceni_do_cisla: | ||||||
| 		for hodn in list(reseni.hodnoceni_set.all()): | 		prob = hodnoceni.problem | ||||||
| 			prob = hodn.problem | 		nadproblem = hlavni_problem(prob) | ||||||
| 			nadproblem = hlavni_problem(prob) | 		if ne_clanek_ne_konfera(nadproblem): | ||||||
| 			if ne_clanek_ne_konfera(nadproblem): | 			nadproblem_slovnik = hlavni_problemy_slovnik[nadproblem.id] | ||||||
| 				nadproblem_slovnik = hlavni_problemy_slovnik[nadproblem.id] | 		else: | ||||||
| 			else: | 			nadproblem_slovnik = hlavni_problemy_slovnik[-1] | ||||||
| 				nadproblem_slovnik = hlavni_problemy_slovnik[-1] |  | ||||||
| 
 | 
 | ||||||
| 			body = hodn.body | 		body = hodnoceni.body | ||||||
| 
 | 
 | ||||||
| 			# a mít více řešitelů | 		# a mít více řešitelů | ||||||
| 			for resitel in list(reseni.resitele.all()): | 		for resitel in hodnoceni.reseni.resitele.all(): | ||||||
| 				if resitel not in aktivni_resitele: | 			if resitel not in aktivni_resitele: | ||||||
| 					print("Skipping {}".format(resitel.id)) | 				print("Skipping {}".format(resitel.id)) | ||||||
| 					continue | 				continue | ||||||
| 				pricti_body(cislobody, resitel, body) | 			pricti_body(cislobody, resitel, body) | ||||||
| 				pricti_body(nadproblem_slovnik, resitel, body) | 			pricti_body(nadproblem_slovnik, resitel, body) | ||||||
| 	end = time.time() | 	end = time.time() | ||||||
| 	print("for cykly:", end-start) | 	print("for cykly:", end-start) | ||||||
| 	return hlavni_problemy_slovnik, cislobody | 	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) | 	temata = set(t.id for t in temata) | ||||||
| 
 | 
 | ||||||
| 	# vezmeme všechna řešení s body do daného čísla | 	hodnoceni_do_cisla = m.Hodnoceni.objects.prefetch_related('problem', 'resitele', | ||||||
| 	reseni_do_cisla = m.Reseni.objects.prefetch_related('problem', 'resitele', | 															  'hodnoceni_set').filter(cislo_body=cislo) | ||||||
| 		'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í) | 	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 | 		problem_slovnik = nadproblem_slovnik[prob.id] | ||||||
| 	# bodů i do bodů za problém |  | ||||||
| 	for reseni in reseni_do_cisla: |  | ||||||
| 
 | 
 | ||||||
| 		# řešení může mít více hodnocení | 		body = hodnoceni.body | ||||||
| 		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] |  | ||||||
| 
 | 
 | ||||||
| 			problem_slovnik = nadproblem_slovnik[prob.id] | 		# a mít více řešitelů | ||||||
| 
 | 		for resitel in hodnoceni.reseni.resitele.all(): | ||||||
| 			body = hodn.body | 			if resitel not in aktivni_resitele: | ||||||
| 
 | 				print("Skipping {}".format(resitel.id)) | ||||||
| 			# a mít více řešitelů | 				continue | ||||||
| 			for resitel in reseni.resitele.all(): | 			pricti_body(problem_slovnik, resitel, body) | ||||||
| 				if resitel not in aktivni_resitele: |  | ||||||
| 					print("Skipping {}".format(resitel.id)) |  | ||||||
| 					continue |  | ||||||
| 				pricti_body(problem_slovnik, resitel, body) |  | ||||||
| 	return body_slovnik | 	return body_slovnik | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Jonas Havelka
						Jonas Havelka