From 82eee15d6a8632797ef03b703e7cf8ee711e4b79 Mon Sep 17 00:00:00 2001 From: Ernesto Rico Schmidt <ernesto@helsinki.at> Date: Fri, 7 Apr 2023 21:19:52 -0400 Subject: [PATCH] Fix playout endpoint showing timeslots in wrong timezone Wrong mix of timezone aware and timezone naive datetime objects Close #116 --- program/views.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/program/views.py b/program/views.py index 00b4ca03..66804e34 100644 --- a/program/views.py +++ b/program/views.py @@ -89,8 +89,9 @@ def timeslot_entry(*, timeslot: TimeSlot) -> dict: return { "id": timeslot.id, - "start": timeslot.start.strftime("%Y-%m-%dT%H:%M:%S"), - "end": timeslot.end.strftime("%Y-%m-%dT%H:%M:%S"), + # we need start & end as timezone naive datetime objects + "start": timezone.make_naive(timeslot.start).strftime("%Y-%m-%dT%H:%M:%S"), + "end": timezone.make_naive(timeslot.end).strftime("%Y-%m-%dT%H:%M:%S"), "title": title, "schedule_id": schedule.id, "is_repetition": timeslot.is_repetition, @@ -175,9 +176,9 @@ def json_playout(request): - internal calendar to retrieve all timeslots for a week """ - # datetime.combine returns a timezone naive datetime object + # datetime.now and datetime.combine return timezone naive datetime objects if request.GET.get("start") is None: - schedule_start = timezone.make_aware(datetime.combine(timezone.now(), time(0, 0))) + schedule_start = timezone.make_aware(datetime.combine(datetime.now(), time(0, 0))) else: schedule_start = timezone.make_aware( datetime.combine(parse_date(request.GET.get("start")), time(0, 0)) @@ -187,8 +188,7 @@ def json_playout(request): schedule_end = schedule_start + timedelta(days=7) else: schedule_end = timezone.make_aware( - datetime.combine(parse_date(request.GET.get("end")) + timedelta(days=1), time(0, 0)), - timezone=timezone.get_current_timezone(), + datetime.combine(parse_date(request.GET.get("end")) + timedelta(days=1), time(0, 0)) ) include_virtual = request.GET.get("includeVirtual") == "true" -- GitLab