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