mirror of
https://framagit.org/la-chariotte/la-chariotte.git
synced 2025-05-01 03:12:26 +02:00
add price and max limit fields for items
This commit is contained in:
parent
417967095f
commit
f10ab88dc2
5 changed files with 40 additions and 4 deletions
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
),
|
||||
]
|
|
@ -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):
|
||||
|
|
|
@ -16,6 +16,8 @@
|
|||
<thead>
|
||||
<tr>
|
||||
<th>Nom</th>
|
||||
<th>Prix unitaire</th>
|
||||
<th>Quantité max (optionnel)</th>
|
||||
<th>Action</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
@ -24,11 +26,15 @@
|
|||
<form method="post" action="{{ create_item_url }}">
|
||||
{% csrf_token %}
|
||||
<td><input name="name" maxlength="100" placeholder="Nom du produit" required></input></td>
|
||||
<td><input name="price" maxlength="50" placeholder="5,40" required></input> €</td>
|
||||
<td><input name="max_limit" maxlength="50" placeholder="42"></input></td>
|
||||
<td><button type="submit" class="button is-primary">Ajouter</button></td>
|
||||
</tr>
|
||||
{% for item in item_list %}
|
||||
<tr>
|
||||
<td>{{ item.name }}</td>
|
||||
<td>{{ item.price }}</td>
|
||||
<td>{{ item.max_limit }}</td>
|
||||
<td>Supprimer (pas possible pour l'instant)</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
|
|
@ -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",
|
||||
|
|
Loading…
Reference in a new issue