diff --git a/CHANGELOG.md b/CHANGELOG.md
index efd08fa..cf6af6d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -25,4 +25,12 @@
- add a check column
- use weasyprint
- not display non null values
- - sort names in alphabetical order
\ No newline at end of file
+ - sort names in alphabetical order
+
+- v0.4.2 : improve order form
+ - add a note to organizer
+ - add date attribute to an order
+ - the values stay in the form when an error is raised
+ - the items are sorted in alphabetical order
+ - display total price on form
+ - only valid phone numbers are accepted
\ No newline at end of file
diff --git a/README.md b/README.md
index d23b031..79bcfff 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# La Chariotte | 0.4.1
+# La Chariotte | 0.4.2
## Présentation
@@ -124,6 +124,8 @@ classDiagram
grouped_order : GroupedOrder
author : OrderAuthor
price
+ created_date
+ note
}
class OrderedItem{
order : Order
diff --git a/la_chariotte/order/templates/order/grouped_order_detail.html b/la_chariotte/order/templates/order/grouped_order_detail.html
index b9b1782..48e66ca 100644
--- a/la_chariotte/order/templates/order/grouped_order_detail.html
+++ b/la_chariotte/order/templates/order/grouped_order_detail.html
@@ -49,6 +49,7 @@
+
{% if not grouped_order.is_to_be_delivered %}
Cette commande groupée est terminée, la livraison a eu lieu le {{ grouped_order.deadline }}.
@@ -56,9 +57,15 @@
{% elif not grouped_order.is_ongoing %}
La période de commande est terminée depuis le {{ grouped_order.deadline }}.
+ {% if user == grouped_order.orga %}
+ En tant qu'organisateur·ice, vous pouvez encore commander jusqu'à la date de livraison.
+ {% else %}
Si vous aviez commandé, rendez-vous le {{ grouped_order.delivery_date }} pour récupérer vos produits !
+ {% endif %}
- {% elif not grouped_order.item_set.first %}
+ {% endif %}
+ {% if grouped_order.is_ongoing or user == grouped_order.orga and grouped_order.is_to_be_delivered %}
+ {% if not grouped_order.item_set.first %}
Il n'y a pas de produits disponibles dans cette commande !
{% else %}
Commander
@@ -153,6 +160,7 @@
{% endif %}
+ {% endif %}
{% endblock %}
diff --git a/la_chariotte/order/tests/test_views.py b/la_chariotte/order/tests/test_views.py
index 62bab6d..44b927f 100644
--- a/la_chariotte/order/tests/test_views.py
+++ b/la_chariotte/order/tests/test_views.py
@@ -838,6 +838,72 @@ class TestOrder:
)
assert response.status_code == 403
+ def test_order_deadline_passed__orga(self, client_log):
+ """The orga user orders when the deadline is passed, but the delivery is to come. It works"""
+
+ grouped_order = create_grouped_order(
+ days_before_delivery_date=5,
+ days_before_deadline=-1,
+ name="gr order test",
+ orga_user=auth.get_user(client_log),
+ )
+ item = models.Item.objects.create(
+ name="test item 1", grouped_order=grouped_order, price=2
+ )
+
+ # some items are ordered
+ order_url = reverse(
+ "order:order",
+ kwargs={
+ "grouped_order_id": grouped_order.pk,
+ },
+ )
+ response = client_log.post(
+ order_url,
+ {
+ f"quantity_{item.pk}": [4, 0],
+ "first_name": "Prénom",
+ "last_name": "Nom",
+ "phone": "0645632569",
+ "email": "test@mail.fr",
+ "note": "",
+ },
+ )
+ assert response.status_code == 302
+
+ def test_order_delivery_passed__orga(self, client_log):
+ """The orga user orders when the deadline and the delivery are passed. The get a 403 error"""
+
+ grouped_order = create_grouped_order(
+ days_before_delivery_date=-2,
+ days_before_deadline=-4,
+ name="gr order test",
+ orga_user=auth.get_user(client_log),
+ )
+ item = models.Item.objects.create(
+ name="test item 1", grouped_order=grouped_order, price=2
+ )
+
+ # some items are ordered
+ order_url = reverse(
+ "order:order",
+ kwargs={
+ "grouped_order_id": grouped_order.pk,
+ },
+ )
+ response = client_log.post(
+ order_url,
+ {
+ f"quantity_{item.pk}": [4, 0],
+ "first_name": "Prénom",
+ "last_name": "Nom",
+ "phone": "0645632569",
+ "email": "test@mail.fr",
+ "note": "",
+ },
+ )
+ assert response.status_code == 403
+
def test_order_too_many_items_ordered(self, client, other_user):
"""If a user orderd more articles than what is available,
the form is displayed again with an error.
diff --git a/la_chariotte/order/views/order.py b/la_chariotte/order/views/order.py
index 79c4c31..86a3d5e 100644
--- a/la_chariotte/order/views/order.py
+++ b/la_chariotte/order/views/order.py
@@ -10,9 +10,13 @@ def order(request, grouped_order_id):
"""Creates an AnonymousUser, and an Order for this GroupedOrder, with related OrderedItems"""
grouped_order = get_object_or_404(GroupedOrder, pk=grouped_order_id)
- # check if the grouped order is ongoing
- if not grouped_order.is_ongoing():
- return http.HttpResponseForbidden()
+ # check if the grouped order is ongoing or if the user is allowed to order
+ if request.user != grouped_order.orga:
+ if not grouped_order.is_ongoing():
+ return http.HttpResponseForbidden()
+ else:
+ if not grouped_order.is_to_be_delivered():
+ return http.HttpResponseForbidden()
# get a dict with quantity_{{item_id}}:[ {{ quantity on phone }},{{ quantity on desktop }} ]
orders_dict = {
diff --git a/la_chariotte/templates/base.html b/la_chariotte/templates/base.html
index 4f6de63..6329ccd 100644
--- a/la_chariotte/templates/base.html
+++ b/la_chariotte/templates/base.html
@@ -130,7 +130,7 @@
- La Chariotte | version 0.4.0
+ La Chariotte | version 0.4.2
diff --git a/pyproject.toml b/pyproject.toml
index 82db4b2..64f5639 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "la_chariotte"
-version = "0.4.1"
+version = "0.4.2"
description = "Web application for organising grouped orders"
authors = [{name = "Laetitia Getti", email = "laetitia@chariotte.fr"}]
readme = "readMe.md"