From 96a73c05d4ec0e66a93629fe6be5b64a12c083dc Mon Sep 17 00:00:00 2001 From: "Pavel \"LEdoian\" Turinsky" Date: Tue, 1 Dec 2020 23:52:15 +0100 Subject: [PATCH] =?UTF-8?q?Odevzd=C3=A1v=C3=A1tko:=20Odkazy=20z=20tabulky?= =?UTF-8?q?=20na=20seznam=20=C5=99e=C5=A1en=C3=AD=20dan=C3=A9ho=20=C5=99e?= =?UTF-8?q?=C5=A1itele?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit + Zkrácení tabulky --- .../seminar/odevzdavatko/tabulka.html | 16 ++++++++--- seminar/templatetags/utils.py | 27 +++++++++++++++++++ seminar/views/odevzdavatko.py | 3 +++ 3 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 seminar/templatetags/utils.py 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 %} - + {% endfor %} {% for resitel,hodnoty in radky%} - + {% for hodn in hodnoty %} {% 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():
{{ p }} + {# TODO: Přehled řešení k problému, odkázaný odsud? #} + {{ p }} +
{{ resitel }} + {# TODO: Chceme mít view i na řešení konkrétního řešitele ke všem problémům? #} + {{ resitel }} + {% 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 %}