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"