|
|
@ -66,9 +66,10 @@ class TabulkaOdevzdanychReseniView(ListView): |
|
|
|
|
|
|
|
# Filtrujeme! |
|
|
|
aktualni_rocnik = m.Nastaveni.get_solo().aktualni_rocnik # .get_solo() vrátí tu jedinou instanci |
|
|
|
self.chteni_resitele = resitele # Zapamatování pro get_context_data |
|
|
|
if resitele == FiltrForm.RESITELE_RELEVANTNI: |
|
|
|
logger.warning("Někdo chtěl v tabulce jen relevantní řešitele a měl smůlu :-(") |
|
|
|
resitele = FiltrForm.RESITELE_LETOSNI # Fall-through |
|
|
|
# TODO: Zkontrolovat, že resi_v_rocniku vrací QuerySet (jinak asi bude žrát spoustu zdrojů zbytečně) |
|
|
|
self.resitele = resi_v_rocniku(aktualni_rocnik) # Prvotní sada, pokud nebude mít body, odstraní se v get_context_data |
|
|
|
elif resitele == FiltrForm.RESITELE_LETOSNI: |
|
|
|
self.resitele = resi_v_rocniku(aktualni_rocnik) |
|
|
|
|
|
|
@ -119,16 +120,20 @@ class TabulkaOdevzdanychReseniView(ListView): |
|
|
|
pridej_reseni(hodnoceni.problem, resitel, hodnoceni.body, hodnoceni.reseni.cas_doruceni) |
|
|
|
|
|
|
|
hodnoty = [] |
|
|
|
resitele_do_tabulky = [] |
|
|
|
for resitel in self.resitele: |
|
|
|
dostal_body = False |
|
|
|
resiteluv_radek = [] |
|
|
|
for problem in self.problemy: |
|
|
|
if problem in tabulka and resitel in tabulka[problem]: |
|
|
|
resiteluv_radek.append(tabulka[problem][resitel]) |
|
|
|
dostal_body = True |
|
|
|
else: |
|
|
|
resiteluv_radek.append(None) |
|
|
|
hodnoty.append(resiteluv_radek) |
|
|
|
ctx['radky'] = list(zip(self.resitele, hodnoty)) |
|
|
|
|
|
|
|
if self.chteni_resitele != FiltrForm.RESITELE_RELEVANTNI or dostal_body: |
|
|
|
hodnoty.append(resiteluv_radek) |
|
|
|
resitele_do_tabulky.append(resitel) |
|
|
|
ctx['radky'] = list(zip(resitele_do_tabulky, hodnoty)) |
|
|
|
ctx['filtr'] = FiltrForm(initial=self.request.GET) |
|
|
|
# Pro použití hacku na automatické {{form.media}} v template: |
|
|
|
ctx['form'] = ctx['filtr'] |
|
|
|