From 13210e06977a9d7250c15f878c9dae313fcc7a35 Mon Sep 17 00:00:00 2001 From: Helge Jung <hej@c3pb.de> Date: Thu, 19 Dec 2024 00:58:05 +0100 Subject: [PATCH] introduce new template filter 'conference_time' --- src/core/locale/de/LC_MESSAGES/django.po | 3 +++ src/core/locale/en/LC_MESSAGES/django.po | 3 +++ src/core/templatetags/conference_time.py | 29 ++++++++++++++++++++++++ src/plainui/jinja2.py | 2 ++ 4 files changed, 37 insertions(+) diff --git a/src/core/locale/de/LC_MESSAGES/django.po b/src/core/locale/de/LC_MESSAGES/django.po index 2590c4530..c392c9da1 100644 --- a/src/core/locale/de/LC_MESSAGES/django.po +++ b/src/core/locale/de/LC_MESSAGES/django.po @@ -2466,6 +2466,9 @@ msgstr "" msgid "Activate your %(safe_site_name)s account" msgstr "Aktiviere dein %(safe_site_name)s Konto" +msgid "Conference-day" +msgstr "Tag" + #, python-format msgid "Validation__error_file_size_MB_exceeded %(max_size)d" msgstr "Die Datei darf nicht größer als %(max_size)dMb sein" diff --git a/src/core/locale/en/LC_MESSAGES/django.po b/src/core/locale/en/LC_MESSAGES/django.po index 608a666a7..95eeb5c3b 100644 --- a/src/core/locale/en/LC_MESSAGES/django.po +++ b/src/core/locale/en/LC_MESSAGES/django.po @@ -2448,6 +2448,9 @@ msgstr "" msgid "Activate your %(safe_site_name)s account" msgstr "" +msgid "Conference-day" +msgstr "day" + #, python-format msgid "Validation__error_file_size_MB_exceeded %(max_size)d" msgstr "You aren't allowed to upload a file larger than %(max_size)dMb" diff --git a/src/core/templatetags/conference_time.py b/src/core/templatetags/conference_time.py index e69de29bb..8bac3e6a1 100644 --- a/src/core/templatetags/conference_time.py +++ b/src/core/templatetags/conference_time.py @@ -0,0 +1,29 @@ +from datetime import datetime + +from django.template.defaulttags import register +from django.utils import timezone +from django.utils.translation import gettext_lazy as _ + +from core.models import Conference + + +@register.filter +def conference_time(timestamp: datetime, conf: Conference): + if timestamp is None: + return '' + + # derive conference day from given timestamp + day = conf.get_conference_day(timestamp) + day_i18n = _('Conference-day') + + # convert timestamp to current timezone + local_ts = timezone.localtime(timestamp) + + # convert midnight to 24:00 + h = local_ts.hour + if h == 0: + h = 24 + m = local_ts.minute + + # return formatted string + return f'{day_i18n} {day} @ {h:02d}:{m:02d}' diff --git a/src/plainui/jinja2.py b/src/plainui/jinja2.py index 2677ce6ce..7365c3a32 100644 --- a/src/plainui/jinja2.py +++ b/src/plainui/jinja2.py @@ -22,6 +22,7 @@ from modeltranslation.fields import build_localized_fieldname from modeltranslation.settings import AVAILABLE_LANGUAGES from core.models import PlatformUser, UserBadge +from core.templatetags.conference_time import conference_time from core.templatetags.hub_absolute import hub_absolute, hub_absolute_self from core.templatetags.update_parameters import update_parameters @@ -302,6 +303,7 @@ def environment(**options): 'link_icon': link_icon, } ) + env.filters['conference_time'] = conference_time env.filters['strftdelta'] = custom_timedelta env.filters['strftdelta_short'] = custom_timedelta_short env.filters['strftimehm'] = custom_strftimehm -- GitLab