mirror of
https://framagit.org/la-chariotte/la-chariotte.git
synced 2025-05-01 11:22:24 +02:00
orga can order after deadline and update version
This commit is contained in:
parent
27fc20090e
commit
0aba581434
7 changed files with 96 additions and 8 deletions
10
CHANGELOG.md
10
CHANGELOG.md
|
@ -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
|
|
@ -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
|
||||
|
|
|
@ -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 %}
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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 = {
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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"
|
||||
|
|
Loading…
Reference in a new issue