Nezobrazuj výsledky u ročníku, pokud žádné nejsou
jinak byl index out of range
This commit is contained in:
		
							parent
							
								
									b080636baa
								
							
						
					
					
						commit
						65e306f316
					
				
					 2 changed files with 91 additions and 87 deletions
				
			
		|  | @ -12,34 +12,36 @@ | |||
|   {% endfor %} | ||||
|   </ul> | ||||
| 
 | ||||
|   <h3>Výsledkovka</h3> | ||||
|   <table class='vysledkovka'> | ||||
|     <tr class='border-b'> | ||||
|       <th class='border-r'># | ||||
| 	  <th class='border-r'>Jméno | ||||
| 	  <th class='border-r'>R.       | ||||
| 	  <th class='border-r'>Odjakživa | ||||
| 		  {% for c in rocnik.verejna_cisla %} | ||||
| 		  {% if c.verejna_vysledkovka %} | ||||
| 	  <th class='border-r'><a href="{{ c.verejne_url }}"> | ||||
| 			  {{c.rocnik.rocnik}}.{{ c.cislo }}</a> | ||||
| 		   {% endif %} | ||||
|       {% endfor %} | ||||
|       <th class='border-r'>Celkem | ||||
|   {% if vysledkovka %} | ||||
|     <h3>Výsledkovka</h3> | ||||
|     <table class='vysledkovka'> | ||||
|       <tr class='border-b'> | ||||
|         <th class='border-r'># | ||||
|         <th class='border-r'>Jméno | ||||
|         <th class='border-r'>R. | ||||
|         <th class='border-r'>Odjakživa | ||||
|             {% for c in rocnik.verejna_cisla %} | ||||
|             {% if c.verejna_vysledkovka %} | ||||
|         <th class='border-r'><a href="{{ c.verejne_url }}"> | ||||
|                 {{c.rocnik.rocnik}}.{{ c.cislo }}</a> | ||||
|              {% endif %} | ||||
|         {% endfor %} | ||||
|         <th class='border-r'>Celkem | ||||
| 
 | ||||
|   {% for rv in vysledkovka %} | ||||
|     <tr> | ||||
|       <td class='border-r'>{{ rv.poradi }} | ||||
| 	  <th class='border-r'> {{ rv.resitel.titul }} <sup>MM</sup> {{ rv.resitel.plne_jmeno }} | ||||
|       <td class='border-r'>{{ rv.resitel.rocnik }} | ||||
|       <td class='border-r'>{{ rv.body_odjakziva }} | ||||
|       {% for b in rv.body %} | ||||
|       <td class='border-r'>{{ b }} | ||||
|       {% endfor %} | ||||
|       <td class='border-r'><b>{{ rv.body_rocnik }}</b> | ||||
|     </tr> | ||||
|   {% endfor %} | ||||
|   </table> | ||||
|     {% for rv in vysledkovka %} | ||||
|       <tr> | ||||
|         <td class='border-r'>{{ rv.poradi }} | ||||
|         <th class='border-r'> {{ rv.resitel.titul }} <sup>MM</sup> {{ rv.resitel.plne_jmeno }} | ||||
|         <td class='border-r'>{{ rv.resitel.rocnik }} | ||||
|         <td class='border-r'>{{ rv.body_odjakziva }} | ||||
|         {% for b in rv.body %} | ||||
|         <td class='border-r'>{{ b }} | ||||
|         {% endfor %} | ||||
|         <td class='border-r'><b>{{ rv.body_rocnik }}</b> | ||||
|       </tr> | ||||
|     {% endfor %} | ||||
|     </table> | ||||
|   {% endif %} | ||||
| 
 | ||||
| </div> | ||||
| {% endblock content %} | ||||
|  |  | |||
							
								
								
									
										122
									
								
								seminar/views.py
									
									
									
									
									
								
							
							
						
						
									
										122
									
								
								seminar/views.py
									
									
									
									
									
								
							|  | @ -87,69 +87,71 @@ class RocnikView(generic.DetailView): | |||
| 
 | ||||
|         cisla_v_rocniku = VysledkyKCisluZaRocnik.objects.filter(cislo__verejna_vysledkovka = True).filter(cislo__rocnik = context['rocnik']).order_by('-cislo') | ||||
|         #vyberu vsechny verejne vysledky z rocniku | ||||
|         vysledky = cisla_v_rocniku.filter(cislo = cisla_v_rocniku[0].cislo).order_by('-body', 'resitel__prijmeni', 'resitel__jmeno').select_related('resitel') | ||||
|         #vybere vsechny vysledky z posledniho verejneho cisla a setridi sestupne dle bodu | ||||
|         vysledky_resitele = {} | ||||
|         stejne_body = {} | ||||
|         konec_rozmezi = {} | ||||
|         vysledkovka = [] | ||||
|         posledni_body = 100000 | ||||
|         predchozi_poradi = None | ||||
|         body_minule = None | ||||
|         #pokud žádné nejsou, výsledkovka se nezobrazí | ||||
|         if cisla_v_rocniku: | ||||
|             vysledky = cisla_v_rocniku.filter(cislo = cisla_v_rocniku[0].cislo).order_by('-body', 'resitel__prijmeni', 'resitel__jmeno').select_related('resitel') | ||||
|             #vybere vsechny vysledky z posledniho verejneho cisla a setridi sestupne dle bodu | ||||
|             vysledky_resitele = {} | ||||
|             stejne_body = {} | ||||
|             konec_rozmezi = {} | ||||
|             vysledkovka = [] | ||||
|             posledni_body = 100000 | ||||
|             predchozi_poradi = None | ||||
|             body_minule = None | ||||
| 
 | ||||
|         for vi in range(len(vysledky)): | ||||
|             v = vysledky[vi] | ||||
|             rv = RadekVysledkovky() | ||||
|             rv.resitel = v.resitel   | ||||
|             verejne_vysl_odjakziva = VysledkyKCisluOdjakziva.objects.filter(cislo__verejna_vysledkovka = True).filter(cislo__rocnik = context['rocnik']).filter(cislo = cisla_v_rocniku[0].cislo) | ||||
|             rv.body_odjakziva = verejne_vysl_odjakziva.filter(resitel = rv.resitel)[0].body | ||||
|             rv.resitel.titul = rv.resitel.get_titul(rv.body_odjakziva) | ||||
|             rv.resitel.rocnik = rv.resitel.rocnik(context['rocnik']) | ||||
|             rv.body = []*len(context['rocnik'].verejna_cisla()) | ||||
|             #pokud pro dany rok a cislo nema resitel vysledky, ma defaultne 0 | ||||
|             for cis in context['rocnik'].verejna_cisla(): | ||||
|                 if cis.verejna_vysledkovka: | ||||
|                     print cis | ||||
|                     body_za_cislo = VysledkyZaCislo.objects.filter(cislo__rocnik = context['rocnik']).filter(cislo = cis).filter(resitel = rv.resitel) | ||||
|                     #seznam vysledku se spravnym rocnikem a cislem pro resitele | ||||
|                     #zobrazim jen je-li vysledkovka verejna | ||||
|                     if body_za_cislo: | ||||
|                         rv.body.append(body_za_cislo[0].body) | ||||
|                         #neprazdne vysledky by mely obsahovat prave jeden vysledek | ||||
|             for vi in range(len(vysledky)): | ||||
|                 v = vysledky[vi] | ||||
|                 rv = RadekVysledkovky() | ||||
|                 rv.resitel = v.resitel   | ||||
|                 verejne_vysl_odjakziva = VysledkyKCisluOdjakziva.objects.filter(cislo__verejna_vysledkovka = True).filter(cislo__rocnik = context['rocnik']).filter(cislo = cisla_v_rocniku[0].cislo) | ||||
|                 rv.body_odjakziva = verejne_vysl_odjakziva.filter(resitel = rv.resitel)[0].body | ||||
|                 rv.resitel.titul = rv.resitel.get_titul(rv.body_odjakziva) | ||||
|                 rv.resitel.rocnik = rv.resitel.rocnik(context['rocnik']) | ||||
|                 rv.body = []*len(context['rocnik'].verejna_cisla()) | ||||
|                 #pokud pro dany rok a cislo nema resitel vysledky, ma defaultne 0 | ||||
|                 for cis in context['rocnik'].verejna_cisla(): | ||||
|                     if cis.verejna_vysledkovka: | ||||
|                         print cis | ||||
|                         body_za_cislo = VysledkyZaCislo.objects.filter(cislo__rocnik = context['rocnik']).filter(cislo = cis).filter(resitel = rv.resitel) | ||||
|                         #seznam vysledku se spravnym rocnikem a cislem pro resitele | ||||
|                         #zobrazim jen je-li vysledkovka verejna | ||||
|                         if body_za_cislo: | ||||
|                             rv.body.append(body_za_cislo[0].body) | ||||
|                             #neprazdne vysledky by mely obsahovat prave jeden vysledek | ||||
|                         else: | ||||
|                             rv.body.append(0) | ||||
|                             #resitel nema za cislo body | ||||
|                 rv.poradi = '' | ||||
|                 #defaultni poradi je prazdne - kvuli sdilenym mistum | ||||
|                 rv.body_rocnik = v.body | ||||
|                 rv.body_na_zacatku = rv.body_odjakziva - rv.body_rocnik | ||||
|                 #body za minule rocniky | ||||
|                 if posledni_body > v.body: | ||||
|                     if stejne_body.get(posledni_body): | ||||
|                         #pokud uz jsme predtim narazili na stejny pocet bodu | ||||
|                         konec_rozmezi[posledni_body] = int(predchozi_poradi.poradi) + stejne_body[posledni_body] | ||||
|                         #druha hranice sdilenych pozic - zacatek + pocet lidi se stejnymi body | ||||
|                         predchozi_poradi.poradi = '{0}. -- {1}.'.format(predchozi_poradi.poradi,konec_rozmezi[posledni_body]) | ||||
|                         #predchozi radek ktery menil pocty bodu bude mit rozsah, pokud bylo vice radku se stejnym poctem bodu | ||||
|                     elif predchozi_poradi : | ||||
|                         predchozi_poradi.poradi = '{0}.'.format(predchozi_poradi.poradi) | ||||
|                         #pokud nebyl rozsah hodnot, vypisu, pridam tecku za cislo | ||||
|                     posledni_body = v.body | ||||
|                     rv.poradi = vi + 1 | ||||
|                     #poradi se meni jen u resitele s rozdilnym poctem bodu nez mel minuly | ||||
|                     predchozi_poradi = rv | ||||
|                 elif posledni_body == v.body: | ||||
|                     if not stejne_body.get(v.body): | ||||
|                         stejne_body[v.body] = 1 | ||||
|                         #pokud klic neexistuje, zalozim novy pro tohoto resitele | ||||
|                     else: | ||||
|                         rv.body.append(0) | ||||
|                         #resitel nema za cislo body | ||||
|             rv.poradi = '' | ||||
|             #defaultni poradi je prazdne - kvuli sdilenym mistum | ||||
|             rv.body_rocnik = v.body | ||||
|             rv.body_na_zacatku = rv.body_odjakziva - rv.body_rocnik | ||||
|             #body za minule rocniky | ||||
|             if posledni_body > v.body: | ||||
|                 if stejne_body.get(posledni_body): | ||||
|                     #pokud uz jsme predtim narazili na stejny pocet bodu | ||||
|                     konec_rozmezi[posledni_body] = int(predchozi_poradi.poradi) + stejne_body[posledni_body] | ||||
|                     #druha hranice sdilenych pozic - zacatek + pocet lidi se stejnymi body | ||||
|                     predchozi_poradi.poradi = '{0}. -- {1}.'.format(predchozi_poradi.poradi,konec_rozmezi[posledni_body]) | ||||
|                     #predchozi radek ktery menil pocty bodu bude mit rozsah, pokud bylo vice radku se stejnym poctem bodu | ||||
|                 elif predchozi_poradi : | ||||
|                     predchozi_poradi.poradi = '{0}.'.format(predchozi_poradi.poradi) | ||||
|                     #pokud nebyl rozsah hodnot, vypisu, pridam tecku za cislo | ||||
|                 posledni_body = v.body | ||||
|                 rv.poradi = vi + 1 | ||||
|                 #poradi se meni jen u resitele s rozdilnym poctem bodu nez mel minuly | ||||
|                 predchozi_poradi = rv | ||||
|             elif posledni_body == v.body: | ||||
|                 if not stejne_body.get(v.body): | ||||
|                     stejne_body[v.body] = 1 | ||||
|                     #pokud klic neexistuje, zalozim novy pro tohoto resitele | ||||
|                 else: | ||||
|                     stejne_body[v.body] += 1 | ||||
|                     #rozsirim pocet resitelu sdilejici stejnou pozici | ||||
|             vysledky_resitele[v.resitel.id] = rv | ||||
|             #odkaz na radek vysledkovky patrici danemu resiteli | ||||
|             vysledkovka.append(rv) | ||||
|                         stejne_body[v.body] += 1 | ||||
|                         #rozsirim pocet resitelu sdilejici stejnou pozici | ||||
|                 vysledky_resitele[v.resitel.id] = rv | ||||
|                 #odkaz na radek vysledkovky patrici danemu resiteli | ||||
|                 vysledkovka.append(rv) | ||||
| 
 | ||||
|         context['vysledkovka'] = vysledkovka | ||||
|             context['vysledkovka'] = vysledkovka | ||||
|         return context | ||||
| 
 | ||||
| class ProblemView(generic.DetailView): | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Matěj Kocián
						Matěj Kocián