Výsledkovka ostatní - Tohle by mělo fungovat, ale isinstance nefunguje
This commit is contained in:
		
							parent
							
								
									efdd32427e
								
							
						
					
					
						commit
						bc3913d4b0
					
				
					 2 changed files with 36 additions and 4 deletions
				
			
		|  | @ -76,6 +76,7 @@ | |||
|         {% for p in problemy %} | ||||
|         <th class='border-r'><a href="{{ p.verejne_url }}">{{ p.kod_v_rocniku }}</a> | ||||
|         {% endfor %} | ||||
|         {% if ostatni %}<th class='border-r'>Ostatní {% endif %} | ||||
|         <th class='border-r'>Za číslo | ||||
|         <th class='border-r'>Za ročník | ||||
|         <th class='border-r'>Odjakživa | ||||
|  |  | |||
|  | @ -989,18 +989,30 @@ def secti_body_za_cislo(cislo, aktivni_resitele, hlavni_problemy=None): | |||
| 	if hlavni_problemy is None: | ||||
| 		hlavni_problemy = hlavni_problemy_cisla(cislo) | ||||
| 
 | ||||
| 	def ne_clanek_ne_konfera(problem): | ||||
| 		return not(isinstance(problem, m.Clanek) or isinstance(problem, m.Konfera)) | ||||
| 
 | ||||
| 	temata_a_spol = list(filter(ne_clanek_ne_konfera, hlavni_problemy)) | ||||
| 
 | ||||
| 	def cosi(problem): | ||||
| 		return problem.id | ||||
| 
 | ||||
| 	hlavni_problemy_slovnik = {} | ||||
| 	for hp in hlavni_problemy: | ||||
| 	for hp in temata_a_spol: | ||||
| 		hlavni_problemy_slovnik[hp.id] = {} | ||||
| 
 | ||||
| 	hlavni_problemy_slovnik[-1] = {} | ||||
| 
 | ||||
| 	# zakládání prázdných záznamů pro řešitele | ||||
| 	cislobody = {} | ||||
| 	for ar in aktivni_resitele: | ||||
| 		# řešitele převedeme na řetězec pomocí unikátního id | ||||
| 		cislobody[ar.id] = "" | ||||
| 		for hp in hlavni_problemy: | ||||
| 		for hp in temata_a_spol: | ||||
| 			slovnik = hlavni_problemy_slovnik[hp.id] | ||||
| 			slovnik[ar.id] = "" | ||||
| 
 | ||||
| 		hlavni_problemy_slovnik[-1][ar.id] = "" | ||||
| 	 | ||||
| 	# vezmeme všechna řešení s body do daného čísla | ||||
| 	reseni_do_cisla = Reseni.objects.prefetch_related('problem', 'resitele',  | ||||
|  | @ -1013,7 +1025,10 @@ def secti_body_za_cislo(cislo, aktivni_resitele, hlavni_problemy=None): | |||
| 		# řešení může řešit více problémů | ||||
| 		for prob in list(reseni.problem.all()): | ||||
| 			nadproblem = hlavni_problem(prob) | ||||
| 			nadproblem_slovnik = hlavni_problemy_slovnik[nadproblem.id] | ||||
| 			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 hodnocení | ||||
| 			for hodn in list(reseni.hodnoceni_set.all()): | ||||
|  | @ -1058,11 +1073,26 @@ def vysledkovka_cisla(cislo, context=None): | |||
| 	# vytvoříme jednotlivé sloupce výsledkovky | ||||
| 	radky_vysledkovky = [] | ||||
| 	i = 0 | ||||
| 
 | ||||
| 	def ne_clanek_ne_konfera(problem): | ||||
| 		return not(isinstance(problem, m.Clanek) or isinstance(problem, m.Konfera)) | ||||
| 
 | ||||
| 	temata_a_spol = list(filter(ne_clanek_ne_konfera, hlavni_problemy)) | ||||
| 
 | ||||
| 	# def not_empty(value): | ||||
| 	# 	return value != '' | ||||
| 	# | ||||
| 	# je_nejake_ostatni = any(filter(not_empty, hlavni_problemy_slovnik[-1].values())) > 0 | ||||
| 
 | ||||
| 	je_nejake_ostatni = len(hlavni_problemy) - len(temata_a_spol) > 0 | ||||
| 
 | ||||
| 	for ar_id in setrizeni_resitele_id: | ||||
| 		# získáme seznam bodů za problémy pro daného řešitele | ||||
| 		problemy = [] 		 | ||||
| 		for hp in hlavni_problemy: | ||||
| 		for hp in temata_a_spol: | ||||
| 			problemy.append(hlavni_problemy_slovnik[hp.id][ar_id]) | ||||
| 		if je_nejake_ostatni: | ||||
| 			problemy.append(hlavni_problemy_slovnik[-1][ar_id]) | ||||
| 		# vytáhneme informace pro daného řešitele | ||||
| 		radek = RadekVysledkovkyCisla( | ||||
| 			poradi[i], # pořadí | ||||
|  | @ -1079,6 +1109,7 @@ def vysledkovka_cisla(cislo, context=None): | |||
| 	context['cislo'] = cislo | ||||
| 	context['radky_vysledkovky'] = radky_vysledkovky | ||||
| 	context['problemy'] = hlavni_problemy | ||||
| 	context['ostatni'] = je_nejake_ostatni | ||||
| 	#context['v_cisle_zadane'] = TODO | ||||
| 	#context['resene_problemy'] = resene_problemy | ||||
| 	return context | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Jonas Havelka
						Jonas Havelka