orga can order after deadline and update version

This commit is contained in:
Laetitia Getti 2023-07-26 10:50:58 +02:00
parent 27fc20090e
commit 0aba581434
7 changed files with 96 additions and 8 deletions

View file

@ -25,4 +25,12 @@
- add a check column
- use weasyprint
- not display non null values
- sort names in alphabetical order
- 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

View file

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

View file

@ -49,6 +49,7 @@
</div>
<div class="box">
<!-- Boite à messages -->
{% if not grouped_order.is_to_be_delivered %}
<p>
<strong>Cette commande groupée est terminée</strong>, la livraison a eu lieu le {{ grouped_order.deadline }}.
@ -56,9 +57,15 @@
{% elif not grouped_order.is_ongoing %}
<p>
<strong>La période de commande est terminée</strong> 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 %}
</p>
{% 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 %}
<p>Il n'y a pas de produits disponibles dans cette commande !</p>
{% else %}
<p class="title">Commander</p>
@ -153,6 +160,7 @@
</div>
</form>
{% endif %}
{% endif %}
</div>
{% endblock %}

View file

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

View file

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

View file

@ -130,7 +130,7 @@
<div class="content has-text-centered columns">
<div class="column">
<p>
<strong>La Chariotte</strong> | version 0.4.0
<strong>La Chariotte</strong> | version 0.4.2
</p>
</div>
<div class="column">

View file

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