From 4f98a5ec88dc9227924af37da8ea3ad05cd4a7ca Mon Sep 17 00:00:00 2001
From: Laetitia Getti
Date: Mon, 26 Jun 2023 15:20:08 +0200
Subject: [PATCH] separate date and time in grouped order create form
closes #88
---
la_chariotte/order/forms.py | 25 +++++++++++++++--
.../templates/order/grouped_order_create.html | 16 +++++++----
la_chariotte/order/tests/test_models.py | 28 ++++++++++++++++---
la_chariotte/order/tests/test_views.py | 14 ++++++++--
la_chariotte/settings.py | 4 +++
la_chariotte/static/css/app.css | 8 ++++--
la_chariotte/static/sass/base/_form.sass | 7 +++--
7 files changed, 84 insertions(+), 18 deletions(-)
diff --git a/la_chariotte/order/forms.py b/la_chariotte/order/forms.py
index c504496..9a962aa 100644
--- a/la_chariotte/order/forms.py
+++ b/la_chariotte/order/forms.py
@@ -1,20 +1,38 @@
+import datetime
+
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 la_chariotte import settings
from la_chariotte.order.models import GroupedOrder, Item
class GroupedOrderForm(forms.ModelForm):
+ deadline_date = forms.DateField(
+ label="Date limite de commande", widget=forms.DateInput(attrs={"type": "date"})
+ )
+ deadline_time = forms.TimeField(
+ label="Heure limite de commande",
+ widget=forms.TimeInput(attrs={"type": "time"}),
+ initial=datetime.time(hour=23, minute=59, second=59),
+ )
+
class Meta:
model = GroupedOrder
- fields = ["name", "deadline", "delivery_date", "place", "description"]
+ fields = [
+ "name",
+ "deadline_date",
+ "deadline_time",
+ "delivery_date",
+ "place",
+ "description",
+ ]
widgets = {
"name": forms.TextInput(
attrs={"placeholder": "ex : Des oranges pour Noël"}
),
- "deadline": forms.DateTimeInput(attrs={"type": "datetime-local"}),
"delivery_date": forms.DateInput(attrs={"type": "date"}),
"place": forms.TextInput(attrs={"placeholder": "(facultatif)"}),
"description": forms.Textarea(
@@ -34,6 +52,9 @@ class GroupedOrderForm(forms.ModelForm):
def clean(self):
cleaned_data = self.cleaned_data
+ self.instance.deadline = datetime.datetime.combine(
+ self.cleaned_data["deadline_date"], self.cleaned_data["deadline_time"]
+ )
try:
GroupedOrder.objects.get(
diff --git a/la_chariotte/order/templates/order/grouped_order_create.html b/la_chariotte/order/templates/order/grouped_order_create.html
index 19f15d9..f61a8ca 100644
--- a/la_chariotte/order/templates/order/grouped_order_create.html
+++ b/la_chariotte/order/templates/order/grouped_order_create.html
@@ -8,12 +8,16 @@