diff --git a/copanier/__init__.py b/copanier/__init__.py
index 990bc2b..1abb7d6 100644
--- a/copanier/__init__.py
+++ b/copanier/__init__.py
@@ -346,9 +346,13 @@ async def place_order(request, response, id):
response.redirect = f"/livraison/{delivery.id}"
else:
order = delivery.orders.get(email) or Order()
+ force_adjustment = "adjust" in request.query and user and user.is_staff
response.html(
"place_order.html",
- {"delivery": delivery, "person": Person(email=email), "order": order},
+ delivery=delivery,
+ person=Person(email=email),
+ order=order,
+ force_adjustment=force_adjustment,
)
diff --git a/copanier/static/app.css b/copanier/static/app.css
index 4c86438..f6b2463 100644
--- a/copanier/static/app.css
+++ b/copanier/static/app.css
@@ -181,7 +181,8 @@ input[type=submit] {
cursor: pointer;
}
input[type=submit],
-input[type=submit] + a.button {
+input[type=submit] + a.button,
+a.button + a.button {
margin-top: 5px;
}
diff --git a/copanier/templates/place_order.html b/copanier/templates/place_order.html
index 8c0d84c..1f7dea7 100644
--- a/copanier/templates/place_order.html
+++ b/copanier/templates/place_order.html
@@ -14,7 +14,7 @@
Conditionnement |
{% endif %}
Commande |
- {% if delivery.status == delivery.ADJUSTMENT or order.has_adjustments %}Ajustement +/− | {% endif %}
+ {% if delivery.status == delivery.ADJUSTMENT or order.has_adjustments or force_adjustment %}Ajustement +/− | {% endif %}
@@ -32,8 +32,8 @@
{{ product.packing or "—" }}{% if delivery.status == delivery.ADJUSTMENT and delivery.product_missing(product) %} (−{{ delivery.product_missing(product) }}){% endif %} |
{% endif %}
|
- {% if delivery.status == delivery.ADJUSTMENT or order.has_adjustments %}
- |
+ {% if delivery.status == delivery.ADJUSTMENT or order.has_adjustments or force_adjustment %}
+ |
{% endif %}
{% endfor %}
@@ -48,6 +48,9 @@
{% endif %}
Envoyer par courriel
+ {% if request.user.is_staff and delivery.status == delivery.CLOSED %}
+ Ajuster
+ {% endif %}
{% endblock body %}
diff --git a/tests/test_views.py b/tests/test_views.py
index 7604b33..d6c5f3b 100644
--- a/tests/test_views.py
+++ b/tests/test_views.py
@@ -154,6 +154,21 @@ async def test_get_place_order_with_closed_delivery_but_adjustments(client, deli
assert doc('[name="adjustment:123"]')
+async def test_get_place_order_with_closed_delivery_but_force(client, delivery):
+ delivery.order_before = datetime.now() - timedelta(days=1)
+ delivery.orders["foo@bar.org"] = Order(products={"123": ProductOrder(wanted=1)})
+ delivery.persist()
+ assert delivery.status == delivery.CLOSED
+ resp = await client.get(f"/livraison/{delivery.id}/commander")
+ doc = pq(resp.body)
+ assert doc('[name="wanted:123"]').attr("readonly") is not None
+ assert not doc('[name="adjustment:123"]')
+ resp = await client.get(f"/livraison/{delivery.id}/commander?adjust")
+ doc = pq(resp.body)
+ assert doc('[name="wanted:123"]').attr("readonly") is not None
+ assert doc('[name="adjustment:123"]')
+
+
async def test_cannot_place_order_on_closed_delivery(client, delivery, monkeypatch):
monkeypatch.setattr("copanier.config.STAFF", ["someone@else.org"])
delivery.order_before = datetime.now() - timedelta(days=1)