diff --git a/vysledkovky/utils.py b/vysledkovky/utils.py index 012c8609..e6be09da 100644 --- a/vysledkovky/utils.py +++ b/vysledkovky/utils.py @@ -245,6 +245,18 @@ class VysledkovkaCisla(Vysledkovka): def hlavni_problemy(self) -> list[m.Problem]: return hlavni_problemy_f(self.problemy) + # Není cached, protože si myslím, že queryset lze použít ve for jen jednou. + @property + def hodnoceni_do_cisla(self): + hodnoceni = m.Hodnoceni.objects.prefetch_related( + 'problem', 'reseni', 'reseni__resitele') + if self.jen_verejne: + hodnoceni = hodnoceni.filter(deadline_body__verejna_vysledkovka=True) + return hodnoceni.filter( + deadline_body__cislo=self.cislo, + deadline_body__deadline__lte=self.do_deadlinu.deadline + ) + @cached_property def problemy_s_body_za_cislo(self): @@ -265,8 +277,7 @@ class VysledkovkaCisla(Vysledkovka): hlavni_problemy_slovnik[-1][ar.id] = "" - hodnoceni_do_cisla = m.Hodnoceni.objects.prefetch_related( - 'problem', 'reseni', 'reseni__resitele').filter(deadline_body__cislo=self.cislo) + hodnoceni_do_cisla = self.hodnoceni_do_cisla for hodnoceni in hodnoceni_do_cisla: prob = hodnoceni.problem @@ -343,11 +354,7 @@ class VysledkovkaCisla(Vysledkovka): temata = set(t.id for t in self.temata_a_spol) - hodnoceni = m.Hodnoceni.objects.prefetch_related( - 'problem', 'reseni', 'reseni__resitele') - if self.jen_verejne: - hodnoceni = hodnoceni.filter(deadline_body__verejna_vysledkovka=True) - hodnoceni_do_cisla = hodnoceni.filter(deadline_body__cislo=self.cislo) + hodnoceni_do_cisla = self.hodnoceni_do_cisla for hodnoceni in hodnoceni_do_cisla: prob = hodnoceni.problem