Výsledkovky s neveřejnými body v zadání/výsledky
a v ročníku
This commit is contained in:
		
							parent
							
								
									b43eee735c
								
							
						
					
					
						commit
						d16cb935f7
					
				
					 4 changed files with 43 additions and 13 deletions
				
			
		|  | @ -33,6 +33,15 @@ | |||
|     {% include "seminar/vysledkovka_rocnik.html" %} | ||||
|   {% endif %} | ||||
| 
 | ||||
|   {% if user.is_staff and vysledkovka_s_neverejnymi %} | ||||
|     <div class='mam-org-only'> | ||||
|     <h3>Výsledková listina včetně neveřejných bodů</h3> | ||||
|       {% with vysledkovka_s_neverejnymi as vysledkovka %} | ||||
|         {% include "seminar/vysledkovka_rocnik.html" %} | ||||
|       {% endwith %} | ||||
|     </div> | ||||
|   {% endif %} | ||||
| 
 | ||||
| </div> | ||||
| {% endblock content %} | ||||
| 
 | ||||
|  |  | |||
|  | @ -4,15 +4,13 @@ | |||
|     <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 %} | ||||
|         {% for c in vysledkovka.cisla %} | ||||
|     <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 %} | ||||
| {% for rv in vysledkovka.radky %} | ||||
|   <tr> | ||||
|     <td class='border-r'>{% autoescape off %}{{ rv.poradi }}{% endautoescape %} | ||||
|     <th class='border-r'> | ||||
|  |  | |||
|  | @ -21,5 +21,15 @@ | |||
|   {% else %} | ||||
|     V tomto ročníku zatím žádné výsledky nejsou | ||||
|   {% endif %} | ||||
| 
 | ||||
|   {% if user.is_staff and vysledkovka_s_neverejnymi %} | ||||
|     <div class='mam-org-only'> | ||||
|     <h2>Výsledky včetně neveřejných</h2> | ||||
|     {% with vysledkovka_s_neverejnymi as vysledkovka %} | ||||
|       {% include "seminar/vysledkovka_rocnik.html" %} | ||||
|     {% endwith %} | ||||
|     </div> | ||||
|   {% endif %} | ||||
| 
 | ||||
| {% endwith %} | ||||
| {% endblock content %} | ||||
|  |  | |||
|  | @ -45,10 +45,12 @@ def ZadaniTemataView(request): | |||
| def ZadaniAktualniVysledkovkaView(request): | ||||
|     nastaveni = get_object_or_404(Nastaveni) | ||||
|     vysledkovka = vysledkovka_rocniku(nastaveni.aktualni_rocnik) | ||||
|     vysledkovka_s_neverejnymi = vysledkovka_rocniku(nastaveni.aktualni_rocnik, jen_verejne=False) | ||||
|     return render(request, 'seminar/zadani/AktualniVysledkovka.html', | ||||
|         { | ||||
|             'nastaveni': nastaveni, | ||||
|             'vysledkovka': vysledkovka, | ||||
|             'vysledkovka_s_neverejnymi': vysledkovka_s_neverejnymi, | ||||
|         } | ||||
|     ) | ||||
| 
 | ||||
|  | @ -126,29 +128,39 @@ def sloupec_s_poradim(vysledky): | |||
|     return poradi_l | ||||
| 
 | ||||
| 
 | ||||
| def vysledkovka_rocniku(rocnik): | ||||
| def vysledkovka_rocniku(rocnik, jen_verejne=True): | ||||
|     """Přebírá ročník (např. context["rocnik"]) a vrací výsledkovou listinu ve | ||||
|     formě vhodné pro šablonu "seminar/vysledkovka_rocniku.html" | ||||
|     """ | ||||
| 
 | ||||
|     #vyberu vsechny verejne vysledky z rocniku | ||||
|     cisla_v_rocniku = VysledkyKCisluZaRocnik.objects.filter(cislo__verejna_vysledkovka=True, cislo__rocnik=rocnik).order_by('cislo') | ||||
|     #vyberu vsechny vysledky z rocniku | ||||
|     cisla_v_rocniku = VysledkyKCisluZaRocnik.objects.filter(cislo__rocnik=rocnik).order_by('cislo') | ||||
|     if jen_verejne: | ||||
|         cisla_v_rocniku = cisla_v_rocniku.filter(cislo__verejna_vysledkovka=True) | ||||
| 
 | ||||
|     #pokud žádné nejsou, výsledkovka se nezobrazí | ||||
|     if not cisla_v_rocniku: | ||||
|         return None | ||||
| 
 | ||||
|     #vybere vsechny vysledky z posledniho verejneho cisla a setridi sestupne dle bodu | ||||
|     #vybere vsechny vysledky z posledniho (verejneho) cisla a setridi sestupne dle bodu | ||||
|     vysledky = list(cisla_v_rocniku.filter(cislo = cisla_v_rocniku[0].cislo).order_by('-body', 'resitel__prijmeni', 'resitel__jmeno').select_related('resitel')) | ||||
| 
 | ||||
|     vysledkovka = [] | ||||
|     class Vysledkovka: | ||||
|         def __init__(self): | ||||
|             self.radky = [] | ||||
|             self.cisla = [] | ||||
| 
 | ||||
|     vysledkovka = Vysledkovka() | ||||
|     vysledkovka.cisla = (rocnik.verejne_vysledkovky_cisla() if jen_verejne else rocnik.cisla.all().order_by('cislo')) | ||||
| 
 | ||||
|     # doplníme některé údaje do řádků výsledkovky pro řešitele ve skupině | ||||
|     for poradi, v in zip(sloupec_s_poradim(vysledky), vysledky): | ||||
|         v.poradi = poradi | ||||
|         v.resitel.rocnik = v.resitel.rocnik(rocnik) | ||||
| 
 | ||||
|         verejne_vysl_odjakziva = VysledkyKCisluOdjakziva.objects.filter(cislo__verejna_vysledkovka=True, cislo__rocnik=rocnik, cislo=cisla_v_rocniku[0].cislo) | ||||
|         verejne_vysl_odjakziva = VysledkyKCisluOdjakziva.objects.filter(cislo__rocnik=rocnik, cislo=cisla_v_rocniku[0].cislo) | ||||
|         if jen_verejne: | ||||
|             verejne_vysl_odjakziva = verejne_vysl_odjakziva.filter(cislo__verejna_vysledkovka=True) | ||||
| 
 | ||||
|         v.body_odjakziva = verejne_vysl_odjakziva.filter(resitel = v.resitel)[0].body | ||||
|         v.titul = v.resitel.get_titul(v.body_odjakziva) | ||||
|  | @ -156,8 +168,8 @@ def vysledkovka_rocniku(rocnik): | |||
|         v.body_cisla = [] | ||||
| 
 | ||||
|         #pokud pro dany rok a cislo nema resitel vysledky, ma defaultne 0 | ||||
|         for cis in rocnik.verejna_cisla(): | ||||
|             if cis.verejna_vysledkovka: | ||||
|         for cis in vysledkovka.cisla: | ||||
|             if not jen_verejne or cis.verejna_vysledkovka: | ||||
|                 #seznam vysledku se spravnym rocnikem a cislem pro resitele | ||||
|                 #zobrazim jen je-li vysledkovka verejna | ||||
|                 body_za_cislo = VysledkyZaCislo.objects.filter(cislo__rocnik=rocnik).filter(cislo = cis).filter(resitel = v.resitel) | ||||
|  | @ -168,7 +180,7 @@ def vysledkovka_rocniku(rocnik): | |||
|                     #resitel nema za cislo body | ||||
|                     v.body_cisla.append(0) | ||||
| 
 | ||||
|         vysledkovka.append(v) | ||||
|         vysledkovka.radky.append(v) | ||||
| 
 | ||||
|     return vysledkovka | ||||
| 
 | ||||
|  | @ -195,6 +207,7 @@ class RocnikView(generic.DetailView): | |||
|         context = super(RocnikView, self).get_context_data(**kwargs) | ||||
| 
 | ||||
|         context['vysledkovka'] = vysledkovka_rocniku(context["rocnik"]) | ||||
|         context['vysledkovka_s_neverejnymi'] = vysledkovka_rocniku(context["rocnik"], jen_verejne=False) | ||||
|         context['temata_v_rocniku'] = verejna_temata(context["rocnik"]) | ||||
| 
 | ||||
|         return context | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Matěj Kocián
						Matěj Kocián