Fix timezone usage in grouped_order form update

This commit is contained in:
Alexis Métaireau 2023-08-20 23:25:00 +00:00
parent 0a227d5723
commit 17dbba9cc8

View file

@ -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