diff --git a/seminar/templatetags/deadliny.py b/seminar/templatetags/deadliny.py index 81500d73..c58d4cba 100644 --- a/seminar/templatetags/deadliny.py +++ b/seminar/templatetags/deadliny.py @@ -5,6 +5,8 @@ register = template.Library() @register.filter(name='deadline') def deadline_text(datum): + if deadline(datum) is None: + return 'Neznámý deadline' typ, cislo, dl = deadline(datum) strings = { TypDeadline.PredDeadline: f"1. deadline čísla {cislo} ({dl})", @@ -15,6 +17,8 @@ def deadline_text(datum): @register.filter(name='deadline_kratseji') def deadline_kratsi_text(datum): + if deadline(datum) is None: + return 'Neznámý deadline' typ, cislo, dl = deadline(datum) strings = { TypDeadline.PredDeadline: f"1. deadline {cislo}", @@ -25,6 +29,8 @@ def deadline_kratsi_text(datum): @register.filter(name='deadline_html') def deadline_html(datum): + if deadline(datum) is None: + return 'Neznámý deadline' typ, _, _ = deadline(datum) text = deadline_kratsi_text(datum) classes = { diff --git a/seminar/test_deadlines.py b/seminar/test_deadlines.py index c2a9ff03..0c0b713b 100644 --- a/seminar/test_deadlines.py +++ b/seminar/test_deadlines.py @@ -144,3 +144,6 @@ class DeadlineTestCase(TestCase): def test_deadline_pro_datetime(self): """Testuje, že i pro datetime dostáváme správné deadliny""" self.skipTest('Chybí implementace testu') + + def test_moc_pozdni_deadline(self): + self.assertIsNone(deadline(date.max)) diff --git a/seminar/views/odevzdavatko.py b/seminar/views/odevzdavatko.py index 585727a5..09b4293f 100644 --- a/seminar/views/odevzdavatko.py +++ b/seminar/views/odevzdavatko.py @@ -257,7 +257,7 @@ class PrehledOdevzdanychReseni(ListView): # Ročník určujeme podle čísla, do jehož deadlinu došlo řešení. # Chceme to mít seřazené, takže místo comphrerehsion ručně postavíme pole polí. Django templates neumí použít OrderedDict :-/ podle_rocniku = [] - for rocnik, hodnoceni in groupby(ctx['object_list'], lambda ho: deadline(ho.reseni.cas_doruceni)[1].rocnik): + for rocnik, hodnoceni in groupby(ctx['object_list'], lambda ho: deadline(ho.reseni.cas_doruceni)[1].rocnik if deadline(ho.reseni.cas_doruceni) is not None else None): podle_rocniku.append((rocnik, list(hodnoceni))) ctx['podle_rocniku'] = reversed(podle_rocniku) # Od nejnovějšího ročníku # TODO: Umožnit stažení / zobrazení řešení