|
@ -29,17 +29,25 @@ class SouhrnReseni: |
|
|
class TabulkaOdevzdanychReseniView(ListView): |
|
|
class TabulkaOdevzdanychReseniView(ListView): |
|
|
template_name = 'seminar/odevzdavatko/tabulka.html' |
|
|
template_name = 'seminar/odevzdavatko/tabulka.html' |
|
|
model = m.Hodnoceni |
|
|
model = m.Hodnoceni |
|
|
akt_rocnik = m.Nastaveni.get_solo().aktualni_rocnik # .get_solo() vrátí tu jedinou instanci, asi... |
|
|
|
|
|
resitele = resi_v_rocniku(akt_rocnik) |
|
|
|
|
|
# NOTE: Protože řešení odkazuje přímo na Problém a QuerySet na Hodnocení je nepolymorfní, musíme porovnávat taky s nepolymorfními Problémy. |
|
|
|
|
|
zadane_problemy = m.Problem.objects.filter(stav=m.Problem.STAV_ZADANY).non_polymorphic() |
|
|
|
|
|
|
|
|
|
|
|
def get_queryset(self): |
|
|
def get_queryset(self): |
|
|
|
|
|
# FIXME: Tenhle blok nemůže být přímo ve třídě, protože před vyrobením databáze neexistuje Nastavení. |
|
|
|
|
|
self.akt_rocnik = m.Nastaveni.get_solo().aktualni_rocnik # .get_solo() vrátí tu jedinou instanci, asi... |
|
|
|
|
|
self.resitele = resi_v_rocniku(akt_rocnik) |
|
|
|
|
|
# NOTE: Protože řešení odkazuje přímo na Problém a QuerySet na Hodnocení je nepolymorfní, musíme porovnávat taky s nepolymorfními Problémy. |
|
|
|
|
|
self.zadane_problemy = m.Problem.objects.filter(stav=m.Problem.STAV_ZADANY).non_polymorphic() |
|
|
|
|
|
|
|
|
qs = super().get_queryset() |
|
|
qs = super().get_queryset() |
|
|
qs = qs.filter(problem__in=self.zadane_problemy).select_related('reseni', 'problem').prefetch_related('reseni__resitele__osoba') |
|
|
qs = qs.filter(problem__in=self.zadane_problemy).select_related('reseni', 'problem').prefetch_related('reseni__resitele__osoba') |
|
|
return qs |
|
|
return qs |
|
|
|
|
|
|
|
|
def get_context_data(self, *args, **kwargs): |
|
|
def get_context_data(self, *args, **kwargs): |
|
|
|
|
|
# FIXME: Tenhle blok nemůže být přímo ve třídě, protože před vyrobením databáze neexistuje Nastavení. |
|
|
|
|
|
self.akt_rocnik = m.Nastaveni.get_solo().aktualni_rocnik # .get_solo() vrátí tu jedinou instanci, asi... |
|
|
|
|
|
self.resitele = resi_v_rocniku(akt_rocnik) |
|
|
|
|
|
# NOTE: Protože řešení odkazuje přímo na Problém a QuerySet na Hodnocení je nepolymorfní, musíme porovnávat taky s nepolymorfními Problémy. |
|
|
|
|
|
self.zadane_problemy = m.Problem.objects.filter(stav=m.Problem.STAV_ZADANY).non_polymorphic() |
|
|
|
|
|
|
|
|
ctx = super().get_context_data(*args, **kwargs) |
|
|
ctx = super().get_context_data(*args, **kwargs) |
|
|
ctx['problemy'] = self.zadane_problemy |
|
|
ctx['problemy'] = self.zadane_problemy |
|
|
ctx['resitele'] = self.resitele |
|
|
ctx['resitele'] = self.resitele |
|
|