Fix výsledkovky
This commit is contained in:
		
							parent
							
								
									41f158768e
								
							
						
					
					
						commit
						0e92bc760b
					
				
					 1 changed files with 36 additions and 51 deletions
				
			
		|  | @ -279,30 +279,23 @@ def secti_body_za_cislo(cislo, aktivni_resitele, hlavni_problemy=None): | |||
| 
 | ||||
| 		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 | ||||
| 	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] | ||||
| 
 | ||||
| 			body = hodn.body | ||||
| 		body = hodnoceni.body | ||||
| 
 | ||||
| 		# 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: | ||||
| 				print("Skipping {}".format(resitel.id)) | ||||
| 				continue | ||||
|  | @ -341,19 +334,11 @@ 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í) | ||||
| 
 | ||||
| 	# 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 | ||||
| 	for hodnoceni in hodnoceni_do_cisla: | ||||
| 		prob = hodnoceni.problem | ||||
| 		nadproblem = hlavni_problem(prob) | ||||
| 		if nadproblem.id in temata: | ||||
| 			nadproblem_slovnik = body_slovnik[nadproblem.id] | ||||
|  | @ -362,10 +347,10 @@ def secti_body_za_cislo_podle_temat(cislo, aktivni_resitele, podproblemy=None, t | |||
| 
 | ||||
| 		problem_slovnik = nadproblem_slovnik[prob.id] | ||||
| 
 | ||||
| 			body = hodn.body | ||||
| 		body = hodnoceni.body | ||||
| 
 | ||||
| 		# a mít více řešitelů | ||||
| 			for resitel in reseni.resitele.all(): | ||||
| 		for resitel in hodnoceni.reseni.resitele.all(): | ||||
| 			if resitel not in aktivni_resitele: | ||||
| 				print("Skipping {}".format(resitel.id)) | ||||
| 				continue | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Jonas Havelka
						Jonas Havelka