Skip to content

Commit

Permalink
Fix ui text end time variables
Browse files Browse the repository at this point in the history
The filter expects local time and it was supplied an UTC time.
Splitting date / time needs to be done after local time conversion.
  • Loading branch information
jlaunonen committed Jun 2, 2024
1 parent 477f327 commit f9244c2
Showing 1 changed file with 18 additions and 7 deletions.
25 changes: 18 additions & 7 deletions kirppu/views/ui_text_utils.py
Original file line number Diff line number Diff line change
@@ -1,35 +1,46 @@
import datetime
import typing

from django.conf import settings
from django.template import defaultfilters
from django.utils.timezone import localtime, is_naive


Lazy = typing.Callable[[str | None], str] | str


def _convert_localtime(value: datetime.datetime) -> datetime.datetime:
if settings.USE_TZ and not is_naive(value):
return localtime(value)
return value


def _datetime(value: datetime.datetime | None) -> Lazy:
def wrapped(fmt: str = "SHORT_DATETIME_FORMAT") -> str:
if value is None:
return ""
return defaultfilters.date(value, fmt)
local_value = _convert_localtime(value)
return defaultfilters.date(local_value, fmt)

return wrapped


def _date(value: datetime.date | None) -> Lazy:
def _date(value: datetime.datetime | None) -> Lazy:
def wrapped(fmt: str = "SHORT_DATE_FORMAT") -> str:
if value is None:
return ""
return defaultfilters.date(value, fmt)
local_value = _convert_localtime(value)
return defaultfilters.date(local_value.date(), fmt)

return wrapped


def _time(value: datetime.time | None) -> Lazy:
def _time(value: datetime.datetime | None) -> Lazy:
def wrapped(fmt: str = None) -> str:
if value is None:
return ""
return defaultfilters.time(value, fmt)
local_value = _convert_localtime(value)
return defaultfilters.time(local_value.time(), fmt)

return wrapped

Expand All @@ -41,10 +52,10 @@ def ui_text_vars(event) -> dict[str, typing.Any]:
"event.end.date": _date(event.end_date),
"event.homepage": event.home_page,
"registration.end.datetime": _datetime(event.registration_end),
"registration.end.date": _date(event.registration_end.date())
"registration.end.date": _date(event.registration_end)
if event.registration_end
else "",
"registration.end.time": _time(event.registration_end.time())
"registration.end.time": _time(event.registration_end)
if event.registration_end
else "",
}

0 comments on commit f9244c2

Please sign in to comment.