diff --git a/la_chariotte/order/templates/order/grouped_order_sheet.html b/la_chariotte/order/templates/order/grouped_order_sheet.html
index 117d2f6..86641f2 100644
--- a/la_chariotte/order/templates/order/grouped_order_sheet.html
+++ b/la_chariotte/order/templates/order/grouped_order_sheet.html
@@ -95,7 +95,9 @@
{% for ordered_item in ordered_items %}
+ {% if ordered_item > 0 %}
{{ ordered_item }}
+ {% endif %}
|
{% endfor %}
diff --git a/la_chariotte/order/tests/test_views.py b/la_chariotte/order/tests/test_views.py
index 0854560..cdbfa69 100644
--- a/la_chariotte/order/tests/test_views.py
+++ b/la_chariotte/order/tests/test_views.py
@@ -27,15 +27,30 @@ def order_items_in_grouped_order(grouped_order):
"""Creates 2 OrderedItems and orders in the given grouped order. Returns the order"""
item_1 = grouped_order.item_set.create(name="test item", price="2")
item_2 = grouped_order.item_set.create(name="test item 2", price="9")
- author = models.OrderAuthor.objects.create(
+ author_1 = models.OrderAuthor.objects.create(
first_name="bob", last_name="lescargot", phone="000", email="bob@escargot.fr"
)
- order = grouped_order.order_set.create(author=author)
+ author_2 = models.OrderAuthor.objects.create(
+ first_name="bob", last_name="alescargot", phone="000", email="bob2@escargot.fr"
+ )
+ author_3 = models.OrderAuthor.objects.create(
+ first_name="bobby",
+ last_name="alescargot",
+ phone="000",
+ email="bob3@escargot.fr",
+ )
+ order = grouped_order.order_set.create(author=author_1)
+ order_2 = grouped_order.order_set.create(author=author_2)
+ order_3 = grouped_order.order_set.create(author=author_3)
models.OrderedItem.objects.create(order=order, item=item_1, nb=3)
models.OrderedItem.objects.create(order=order, item=item_2, nb=2)
+ models.OrderedItem.objects.create(order=order_2, item=item_1, nb=1)
+ models.OrderedItem.objects.create(order=order_3, item=item_2, nb=1)
item_1.compute_ordered_nb()
item_2.compute_ordered_nb()
order.compute_order_price()
+ order_2.compute_order_price()
+ order_3.compute_order_price()
grouped_order.compute_total_price()
grouped_order.save()
return order
@@ -1217,8 +1232,8 @@ class TestGroupedOrderDeleteView:
order = order_items_in_grouped_order(grouped_order)
assert models.Item.objects.count() == 2
- assert models.OrderedItem.objects.count() == 2
- assert models.OrderAuthor.objects.count() == 1
+ assert models.OrderedItem.objects.count() == 4
+ assert models.OrderAuthor.objects.count() == 3
# get the delete view
delete_view_url = reverse(
@@ -1302,9 +1317,9 @@ class TestGroupedOrderDuplicateView:
assert models.GroupedOrder.objects.count() == 1
order = order_items_in_grouped_order(grouped_order)
assert models.Item.objects.count() == 2
- assert models.OrderedItem.objects.count() == 2
- assert models.OrderAuthor.objects.count() == 1
- assert grouped_order.item_set.first().ordered_nb == 3
+ assert models.OrderedItem.objects.count() == 4
+ assert models.OrderAuthor.objects.count() == 3
+ assert grouped_order.item_set.first().ordered_nb == 4
# duplicate
duplicate_view_url = reverse(
@@ -1330,7 +1345,7 @@ class TestGroupedOrderDuplicateView:
)
# The initial grouped order did not change
- assert grouped_order.item_set.first().ordered_nb == 3
+ assert grouped_order.item_set.first().ordered_nb == 4
def test_duplicate_grouped_order__not_orga(self, client_log, other_user):
"""A user that is not orga gets the duplicate view. They get a 403 error."""
@@ -1508,7 +1523,15 @@ class TestGroupedOrderSheetView:
assert response.context["grouped_order"] == grouped_order
assert response.context["items"].count() == 2
assert response.context["orders_dict"][order] == [3, 2]
- assert response.context["grouped_order"].total_price == 24
+ assert response.context["grouped_order"].total_price == 35
+
+ # test if the orders are sorted by last names
+ orders = list(response.context["orders_dict"].keys())
+ assert orders[0].author.last_name == "alescargot"
+ assert orders[0].author.first_name == "bob"
+ assert orders[1].author.last_name == "alescargot"
+ assert orders[1].author.first_name == "bobby"
+ assert orders[2].author.last_name == "lescargot"
class TestExportGroupedOrderEmailAddressesToCSVView:
diff --git a/la_chariotte/order/views/grouped_order.py b/la_chariotte/order/views/grouped_order.py
index adee9fe..3568843 100644
--- a/la_chariotte/order/views/grouped_order.py
+++ b/la_chariotte/order/views/grouped_order.py
@@ -240,7 +240,9 @@ class GroupedOrderSheetView(UserPassesTestMixin, generic.DetailView):
# Get content of orders as a dict {order : [ordered_nb for item 1, ordered_nb for item 2, ...]}
orders_dict = {}
- for order in grouped_order.order_set.all():
+ for order in grouped_order.order_set.all().order_by(
+ "author__last_name", "author__first_name"
+ ):
ordered_values = [] # ordered_values list as value of the dict
for item in items: # items that has actually been ordered
# find the ordered nb of this item in this order
|