diff --git a/seminar/views/odevzdavatko.py b/seminar/views/odevzdavatko.py index 7cc95d77..5458a8ca 100644 --- a/seminar/views/odevzdavatko.py +++ b/seminar/views/odevzdavatko.py @@ -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']