From f10ab88dc2171d287566f043c0974f61a0f05da4 Mon Sep 17 00:00:00 2001 From: Laetitia Getti Date: Tue, 9 May 2023 15:58:21 +0200 Subject: [PATCH] add price and max limit fields for items --- la_chariotte/order/forms.py | 2 +- .../0014_item_max_limit_item_price.py | 23 +++++++++++++++++++ la_chariotte/order/models.py | 5 +++- .../order/grouped_order_add_items.html | 6 +++++ la_chariotte/order/tests/test_views.py | 8 +++++-- 5 files changed, 40 insertions(+), 4 deletions(-) create mode 100644 la_chariotte/order/migrations/0014_item_max_limit_item_price.py diff --git a/la_chariotte/order/forms.py b/la_chariotte/order/forms.py index 17865e7..dc66c3f 100644 --- a/la_chariotte/order/forms.py +++ b/la_chariotte/order/forms.py @@ -40,7 +40,7 @@ class GroupedOrderForm(ModelForm): class ItemCreateForm(ModelForm): class Meta: model = Item - fields = ["name"] + fields = ["name", "price", "max_limit"] def __init__(self, *args, **kwargs): self.grouped_order = kwargs.pop("grouped_order") # type: GroupedOrder diff --git a/la_chariotte/order/migrations/0014_item_max_limit_item_price.py b/la_chariotte/order/migrations/0014_item_max_limit_item_price.py new file mode 100644 index 0000000..cfc9ef9 --- /dev/null +++ b/la_chariotte/order/migrations/0014_item_max_limit_item_price.py @@ -0,0 +1,23 @@ +# Generated by Django 4.2 on 2023-05-09 13:44 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("order", "0013_alter_groupedorder_unique_together"), + ] + + operations = [ + migrations.AddField( + model_name="item", + name="max_limit", + field=models.PositiveSmallIntegerField(blank=True, null=True), + ), + migrations.AddField( + model_name="item", + name="price", + field=models.DecimalField(decimal_places=2, default=1, max_digits=10), + preserve_default=False, + ), + ] diff --git a/la_chariotte/order/models.py b/la_chariotte/order/models.py index 51cbe13..d8d44d4 100644 --- a/la_chariotte/order/models.py +++ b/la_chariotte/order/models.py @@ -67,13 +67,16 @@ class Item(models.Model): grouped_order = models.ForeignKey( GroupedOrder, on_delete=models.CASCADE ) # à transformer en manytomany quand il y aura un catalogue + price = models.DecimalField(max_digits=10, decimal_places=2) + max_limit = models.PositiveSmallIntegerField(null=True, blank=True) + ordered_nb = models.IntegerField(default=0) def get_absolute_url(self): return reverse("order:manage_items", kwargs={"pk": self.grouped_order.pk}) def __str__(self): # pragma: no cover - return f"{self.name} dans la commande groupée {self.grouped_order.pk}" + return f"{self.name} ({self.price} €)" class OrderedItem(models.Model): 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 5d6434d..885d3e8 100644 --- a/la_chariotte/order/templates/order/grouped_order_add_items.html +++ b/la_chariotte/order/templates/order/grouped_order_add_items.html @@ -16,6 +16,8 @@ Nom + Prix unitaire + Quantité max (optionnel) Action @@ -24,11 +26,15 @@
{% csrf_token %} + € + {% for item in item_list %} {{ item.name }} + {{ item.price }} + {{ item.max_limit }} Supprimer (pas possible pour l'instant) {% endfor %} diff --git a/la_chariotte/order/tests/test_views.py b/la_chariotte/order/tests/test_views.py index 9c548c3..954194a 100644 --- a/la_chariotte/order/tests/test_views.py +++ b/la_chariotte/order/tests/test_views.py @@ -214,7 +214,9 @@ class TestGroupedOrderDetailView: name="gr order test", orga_user=other_user, ) - item = Item.objects.create(name="test item", grouped_order=grouped_order) + item = Item.objects.create( + name="test item", grouped_order=grouped_order, price=1 + ) detail_url = reverse( "order:grouped_order_detail", kwargs={ @@ -400,7 +402,9 @@ class TestItemCreateView: "pk": grouped_order.pk, }, ) - response = client_log.post(create_item_view_url, {"name": "titre item"}) + response = client_log.post( + create_item_view_url, {"name": "titre item", "price": 2} + ) assert response.status_code == 302 assert response.url == reverse( "order:manage_items",