diff --git a/la_chariotte/order/admin.py b/la_chariotte/order/admin.py index 5aab8b9..8182731 100644 --- a/la_chariotte/order/admin.py +++ b/la_chariotte/order/admin.py @@ -1,8 +1,9 @@ from django.contrib import admin -from .models import GroupedOrder, Item, Order, OrderedItem +from .models import GroupedOrder, Item, Order, OrderAuthor, OrderedItem admin.site.register(GroupedOrder) admin.site.register(Order) admin.site.register(Item) admin.site.register(OrderedItem) +admin.site.register(OrderAuthor) diff --git a/la_chariotte/order/migrations/0020_groupedorder_total_price_alter_orderauthor_email.py b/la_chariotte/order/migrations/0020_groupedorder_total_price_alter_orderauthor_email.py new file mode 100644 index 0000000..a2398f6 --- /dev/null +++ b/la_chariotte/order/migrations/0020_groupedorder_total_price_alter_orderauthor_email.py @@ -0,0 +1,25 @@ +# Generated by Django 4.2 on 2023-05-15 12:46 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("order", "0019_order_price"), + ] + + operations = [ + migrations.AddField( + model_name="groupedorder", + name="total_price", + field=models.DecimalField(decimal_places=2, default=0, max_digits=10), + ), + migrations.AlterField( + model_name="orderauthor", + name="email", + field=models.CharField( + help_text="Pour vous que l'organisateur·ice vous contacte en cas de besoin", + verbose_name="Adresse mail", + ), + ), + ] diff --git a/la_chariotte/order/models.py b/la_chariotte/order/models.py index 25fb651..622cd01 100644 --- a/la_chariotte/order/models.py +++ b/la_chariotte/order/models.py @@ -19,10 +19,18 @@ class GroupedOrder(models.Model): max_length=100, null=True, blank=True, verbose_name="Lieu de livraison" ) description = models.TextField("Description", null=True, blank=True) + total_price = models.DecimalField(max_digits=10, decimal_places=2, default=0) class Meta: unique_together = ["delivery_date", "name", "orga"] + def compute_total_price(self): + price = 0 + for order in self.order_set.all(): + price += order.price + self.total_price = price + self.save() + def is_ongoing(self): """Returns True if the grouped order is open for new Orders - False if it's too late""" return self.deadline >= timezone.now() @@ -66,7 +74,8 @@ class OrderAuthor(models.Model): help_text="Pour vous que l'organisateur·ice vous contacte en cas de besoin", ) email = models.CharField( - verbose_name="Pour vous que l'organisateur·ice vous contacte en cas de besoin" + verbose_name="Adresse mail", + help_text="Pour vous que l'organisateur·ice vous contacte en cas de besoin", ) def __str__(self): # pragma: no cover @@ -95,6 +104,10 @@ class Item(models.Model): ordered_nb = models.IntegerField(default=0) + def get_total_price(self): + """Returns the price of all orders on this item""" + return self.price * self.ordered_nb + def get_absolute_url(self): return reverse("order:manage_items", kwargs={"pk": self.grouped_order.pk}) diff --git a/la_chariotte/order/templates/order/grouped_order_detail.html b/la_chariotte/order/templates/order/grouped_order_detail.html index b3f3c50..b9af304 100644 --- a/la_chariotte/order/templates/order/grouped_order_detail.html +++ b/la_chariotte/order/templates/order/grouped_order_detail.html @@ -44,7 +44,6 @@
Vue d'organisation de la commande groupée {{ grouped_order.id }}, avec les produits commandés et les commandes individuelles
-{{ grouped_order }} -
Organisateur·ice : {{ grouped_order.orga }}
-Date de livraison : {{ grouped_order.delivery_date }}
-Date limite de commande : {{ grouped_order.deadline }}
- {% if grouped_order.description %}{{ grouped_order.description }}
{% endif %} + +{{ grouped_order }}
+ {% if grouped_order.description %}{{ grouped_order.description }}
{% endif %} +Lieu : {{ grouped_order.place }}
+ {% endif %} +Date de livraison : {{ grouped_order.delivery_date }}
+Date limite de commande : {{ grouped_order.deadline }}
+ Retour à la page de commande +Produits commandés
+Produit | +Prix unitaire | +Quantité | +Total | +
---|---|---|---|
{{ item.name }} | +{{ item.price }} € | +{{ item.ordered_nb }} | +{{ item.get_total_price }} € | +Total pour la commande groupée | ++ | + | {{ grouped_order.total_price }} € | + +
Liste des commandes
+Participant·e | +Montant | +Contact | +
---|---|---|
{{ order.author }} | +{{ order.price }} € | +{{ order.author.email }} | +Total pour la commande groupée | +{{ grouped_order.total_price }} € | ++ + |