From c8811f93d08942fb5ae910365e4dae0e549ac8cf Mon Sep 17 00:00:00 2001 From: Laetitia Getti Date: Tue, 25 Jul 2023 10:55:54 +0200 Subject: [PATCH] sort items by name --- .../migrations/0024_alter_item_options.py | 16 ++++++++++ la_chariotte/order/models.py | 3 ++ .../order/grouped_order_add_items.html | 4 +-- la_chariotte/order/tests/test_models.py | 29 ++++++++++++++++++- 4 files changed, 49 insertions(+), 3 deletions(-) create mode 100644 la_chariotte/order/migrations/0024_alter_item_options.py diff --git a/la_chariotte/order/migrations/0024_alter_item_options.py b/la_chariotte/order/migrations/0024_alter_item_options.py new file mode 100644 index 0000000..5b33a6d --- /dev/null +++ b/la_chariotte/order/migrations/0024_alter_item_options.py @@ -0,0 +1,16 @@ +# Generated by Django 4.2.1 on 2023-07-25 08:20 + +from django.db import migrations + + +class Migration(migrations.Migration): + dependencies = [ + ("order", "0023_order_created_date_order_note"), + ] + + operations = [ + migrations.AlterModelOptions( + name="item", + options={"ordering": ["name"]}, + ), + ] diff --git a/la_chariotte/order/models.py b/la_chariotte/order/models.py index 4148156..7434e7c 100644 --- a/la_chariotte/order/models.py +++ b/la_chariotte/order/models.py @@ -146,6 +146,9 @@ class Item(models.Model): def __str__(self): # pragma: no cover return f"{self.name} ({self.price} €)" + class Meta: + ordering = ["name"] + class OrderedItem(models.Model): """Item in one specific Order, and the number of articles""" diff --git a/la_chariotte/order/templates/order/grouped_order_add_items.html b/la_chariotte/order/templates/order/grouped_order_add_items.html index fb6e902..10cebf2 100644 --- a/la_chariotte/order/templates/order/grouped_order_add_items.html +++ b/la_chariotte/order/templates/order/grouped_order_add_items.html @@ -27,8 +27,8 @@
{% csrf_token %} - € - + € + diff --git a/la_chariotte/order/tests/test_models.py b/la_chariotte/order/tests/test_models.py index 1f8e4df..602fe35 100644 --- a/la_chariotte/order/tests/test_models.py +++ b/la_chariotte/order/tests/test_models.py @@ -4,7 +4,7 @@ from django.contrib import auth from django.urls import reverse from django.utils import timezone -from la_chariotte.order.models import GroupedOrder +from la_chariotte.order.models import GroupedOrder, Item class TestGroupedOrderModel: @@ -123,3 +123,30 @@ class TestGroupedOrderModel: ) "La date de livraison ne doit pas être dans le passé" in response.content.decode() assert GroupedOrder.objects.count() == 0 + + +class TestItemModel: + """Tests for Item model""" + + def test_items_sorted_by_name(self, client_log): + """On the grouped order detail view and other views where items are listed, they appear in alphabetical order""" + + date = timezone.now() + datetime.timedelta(days=3) + grouped_order = GroupedOrder.objects.create( + name="test", + orga=auth.get_user(client_log), + delivery_date=date.date(), + deadline=date, + ) + item = Item.objects.create( + name="atest item 1", grouped_order=grouped_order, price=1, max_limit=20 + ) + item2 = Item.objects.create( + name="ctest item 2", grouped_order=grouped_order, price=5 + ) + item3 = Item.objects.create( + name="btest item 3", grouped_order=grouped_order, price=5 + ) + assert grouped_order.item_set.first() == item + assert grouped_order.item_set.all()[1] == item3 + assert grouped_order.item_set.all()[2] == item2