From 17dbba9cc8b05873d0650f22c2909f933acfdf48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexis=20M=C3=A9taireau?= Date: Sun, 20 Aug 2023 23:25:00 +0000 Subject: [PATCH] Fix timezone usage in grouped_order form update --- la_chariotte/order/forms.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/la_chariotte/order/forms.py b/la_chariotte/order/forms.py index 16bbcfa..2c7e4b0 100644 --- a/la_chariotte/order/forms.py +++ b/la_chariotte/order/forms.py @@ -4,6 +4,7 @@ from django import forms from django.contrib.auth import get_user_model from django.core.exceptions import NON_FIELD_ERRORS, ValidationError from django.db import IntegrityError +from django.utils import timezone from la_chariotte import settings from la_chariotte.order.models import GroupedOrder, Item @@ -52,9 +53,11 @@ class GroupedOrderForm(forms.ModelForm): # When updating an existing order, reuse existing values if kwargs["instance"]: - self.initial["deadline_date"] = self.instance.deadline.date() - self.initial["deadline_time"] = self.instance.deadline.time() - # TODO: there is a bug here ; the time displayed in form is 2 hours earlier than the actual deadline time + locale_deadline = self.instance.deadline.replace( + tzinfo=timezone.utc + ).astimezone(tz=None) + self.initial["deadline_date"] = locale_deadline.date() + self.initial["deadline_time"] = locale_deadline.time() def save(self, commit=True): self.instance.orga = get_user_model().objects.get(id=self.user.pk) @@ -62,9 +65,10 @@ class GroupedOrderForm(forms.ModelForm): def clean(self): cleaned_data = self.cleaned_data - self.instance.deadline = datetime.datetime.combine( + deadline = datetime.datetime.combine( self.cleaned_data["deadline_date"], self.cleaned_data["deadline_time"] ) + self.instance.deadline = timezone.make_aware(deadline) return cleaned_data