diff --git a/seminar/templates/seminar/odevzdavatko/tabulka.html b/seminar/templates/seminar/odevzdavatko/tabulka.html index ac628be6..ff396ce4 100644 --- a/seminar/templates/seminar/odevzdavatko/tabulka.html +++ b/seminar/templates/seminar/odevzdavatko/tabulka.html @@ -1,21 +1,31 @@ {% extends "base.html" %} +{% load utils %} {# Možná by mohlo být někde výš v hierarchii templatů... #} + {% block content %}
{# Prázdná buňka v levém horním rohu #} {% for p in problemy %} - | {{ p }} | ++ {# TODO: Přehled řešení k problému, odkázaný odsud? #} + {{ p }} + | {% endfor %}
---|---|---|
{{ resitel }} | ++ {# TODO: Chceme mít view i na řešení konkrétního řešitele ke všem problémům? #} + {{ resitel }} + | {% for hodn in hodnoty %}
{% if hodn %}
- {{ hodn.pocet_reseni }} řešení {{ hodn.body }} bodů {{ hodn.posledni_odevzdani }} + + {{ hodn.pocet_reseni }} řeš. {{ hodn.body }} b {{ hodn.posledni_odevzdani|kratke_datum|default_if_none:"Nikdy"|default:"???"}} + {% endif %} |
{% endfor %}
diff --git a/seminar/templatetags/utils.py b/seminar/templatetags/utils.py
new file mode 100644
index 00000000..2a520d6a
--- /dev/null
+++ b/seminar/templatetags/utils.py
@@ -0,0 +1,27 @@
+from django import template
+from datetime import datetime, timedelta
+from pytz import timezone
+from mamweb.settings import TIME_ZONE
+import logging
+register = template.Library()
+
+logger = logging.getLogger(__name__)
+
+@register.filter(name='kratke_datum', expects_localtime=True)
+def kratke_datum(dt):
+ # None dává None, ne-datum dává False, aby se daly použít filtry typu "default".
+ if dt is None:
+ return None
+ if not isinstance(dt, datetime):
+ logger.warning(f"Špatné volání filtru {__name__}: {dt}")
+ return False
+ naive_now = datetime.now()
+ tz = timezone(TIME_ZONE)
+ now = tz.localize(naive_now)
+ delta = dt - now
+ if delta <= timedelta(days=1):
+ return dt.strftime("%k:%M")
+ if delta <= timedelta(years=1):
+ return dt.strftime("%d. %m.")
+ return dt.strftime("%d. %m. %Y")
+
diff --git a/seminar/views/odevzdavatko.py b/seminar/views/odevzdavatko.py
index 55a12f67..ea30c543 100644
--- a/seminar/views/odevzdavatko.py
+++ b/seminar/views/odevzdavatko.py
@@ -57,6 +57,9 @@ class TabulkaOdevzdanychReseniView(ListView):
# FIXME: Možná dává smysl i mít None jako velké číslo -- jakože "TODO: zadat body"
)
tabulka[problem][resitel].pocet_reseni += 1
+ # Pro jednoduchost template si ještě poznamenáme ID problému a řešitele
+ tabulka[problem][resitel].problem_id = problem.id
+ tabulka[problem][resitel].resitel_id = resitel.id
for hodnoceni in self.get_queryset():
for resitel in hodnoceni.reseni.resitele.all():