mirror of
https://framagit.org/la-chariotte/la-chariotte.git
synced 2025-05-03 20:31:50 +02:00
add note to grouped order orga
This commit is contained in:
parent
a6189e9bd6
commit
5c7bcac49b
7 changed files with 67 additions and 8 deletions
|
@ -0,0 +1,28 @@
|
||||||
|
# Generated by Django 4.2.1 on 2023-07-24 14:58
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.utils.timezone
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
dependencies = [
|
||||||
|
("order", "0022_alter_groupedorder_unique_together"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="order",
|
||||||
|
name="created_date",
|
||||||
|
field=models.DateTimeField(
|
||||||
|
auto_now_add=True,
|
||||||
|
default=django.utils.timezone.now,
|
||||||
|
verbose_name="Date de la commande",
|
||||||
|
),
|
||||||
|
preserve_default=False,
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="order",
|
||||||
|
name="note",
|
||||||
|
field=models.TextField(blank=True, max_length=200, null=True),
|
||||||
|
),
|
||||||
|
]
|
|
@ -90,6 +90,8 @@ class Order(models.Model):
|
||||||
author = models.ForeignKey(OrderAuthor, on_delete=models.CASCADE)
|
author = models.ForeignKey(OrderAuthor, on_delete=models.CASCADE)
|
||||||
articles_nb = models.PositiveIntegerField(default=0)
|
articles_nb = models.PositiveIntegerField(default=0)
|
||||||
price = models.DecimalField(max_digits=10, decimal_places=2, default=0)
|
price = models.DecimalField(max_digits=10, decimal_places=2, default=0)
|
||||||
|
created_date = models.DateTimeField("Date de la commande", auto_now_add=True)
|
||||||
|
note = models.TextField(max_length=200, null=True, blank=True)
|
||||||
|
|
||||||
def compute_order_articles_nb(self):
|
def compute_order_articles_nb(self):
|
||||||
"""Computes the number of articles in this order"""
|
"""Computes the number of articles in this order"""
|
||||||
|
|
|
@ -134,6 +134,8 @@
|
||||||
<input id="email" type="email" placeholder="exemple@mail.fr" name="email" required></p>
|
<input id="email" type="email" placeholder="exemple@mail.fr" name="email" required></p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<p><label for="phone">Note à l'organisateur·ice</label>
|
||||||
|
<textarea id="note" rows=3 placeholder="(facultatif)" name="note"></textarea></p>
|
||||||
|
|
||||||
<div class="buttons">
|
<div class="buttons">
|
||||||
<button type="submit" value="Order" class="button is-primary">
|
<button type="submit" value="Order" class="button is-primary">
|
||||||
|
|
|
@ -153,9 +153,12 @@
|
||||||
<td>{{ order.author }}</td>
|
<td>{{ order.author }}</td>
|
||||||
<td>{{ order.price }} €</td>
|
<td>{{ order.price }} €</td>
|
||||||
<td><a href="mailto:{{ order.author.email }}">{{ order.author.email }}</a></td>
|
<td><a href="mailto:{{ order.author.email }}">{{ order.author.email }}</a></td>
|
||||||
<td><button class="button is-info is-small js-modal-trigger" data-target="order-detail-{{ order.id }}">
|
<td>
|
||||||
|
<button class="button is-info is-small js-modal-trigger" data-target="order-detail-{{ order.id }}">
|
||||||
Voir
|
Voir
|
||||||
</button></td>
|
</button>
|
||||||
|
{% if order.note %}<i class="fa fa-comment ml-3" title="{{ order.note }}" aria-hidden="true"></i>{% endif %}
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<!-- Order detail modal -->
|
<!-- Order detail modal -->
|
||||||
|
@ -169,10 +172,20 @@
|
||||||
<button class="delete" aria-label="close"></button>
|
<button class="delete" aria-label="close"></button>
|
||||||
</header>
|
</header>
|
||||||
<section class="modal-card-body">
|
<section class="modal-card-body">
|
||||||
{% for item in order.ordered_items.all %}
|
<div class="columns">
|
||||||
{{ item.nb }} {{ item.item.name }}
|
<div class="column">
|
||||||
<hr class="mb-0 mt-1">
|
{% for item in order.ordered_items.all %}
|
||||||
{% endfor %}
|
{{ item.nb }} x {{ item.item.name }}
|
||||||
|
<hr class="mb-0 mt-1">
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
{% if order.note %}
|
||||||
|
<div class="column is-4">
|
||||||
|
<p class="mini-title">Note à l'organisateur·ice</p>
|
||||||
|
<p>{{ order.note }}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
</section>
|
</section>
|
||||||
<footer class="modal-card-foot">
|
<footer class="modal-card-foot">
|
||||||
<p class="mini-title">Total à payer</p>
|
<p class="mini-title">Total à payer</p>
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
<p><strong>Votre commande</strong></p>
|
<p><strong>Votre commande</strong></p>
|
||||||
<ul>
|
<ul>
|
||||||
{% for item in order.ordered_items.all %}
|
{% for item in order.ordered_items.all %}
|
||||||
<li>{{ item.nb }} {{ item.item }} : {{ item.get_price }} €</li>
|
<li>{{ item.nb }} x {{ item.item }} : {{ item.get_price }} €</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
<p>Prix total de la commande : <strong>{{ order.price }} €</strong>
|
<p>Prix total de la commande : <strong>{{ order.price }} €</strong>
|
||||||
|
|
|
@ -286,6 +286,7 @@ class TestGroupedOrderDetailView:
|
||||||
"last_name": "Nom",
|
"last_name": "Nom",
|
||||||
"phone": "0645632569",
|
"phone": "0645632569",
|
||||||
"email": "test@mail.fr",
|
"email": "test@mail.fr",
|
||||||
|
"note": "note test",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
assert response.status_code == 302
|
assert response.status_code == 302
|
||||||
|
@ -302,6 +303,8 @@ class TestGroupedOrderDetailView:
|
||||||
assert models.OrderAuthor.objects.first().first_name == "Prénom"
|
assert models.OrderAuthor.objects.first().first_name == "Prénom"
|
||||||
assert models.OrderAuthor.objects.first().email == "test@mail.fr"
|
assert models.OrderAuthor.objects.first().email == "test@mail.fr"
|
||||||
assert models.OrderAuthor.objects.first().phone == "0645632569"
|
assert models.OrderAuthor.objects.first().phone == "0645632569"
|
||||||
|
assert models.Order.objects.first().note == "note test"
|
||||||
|
assert models.Order.objects.first().created_date.date() == timezone.now().date()
|
||||||
assert item.ordered_nb == 4
|
assert item.ordered_nb == 4
|
||||||
assert item2.ordered_nb == 1
|
assert item2.ordered_nb == 1
|
||||||
order = models.Order.objects.first()
|
order = models.Order.objects.first()
|
||||||
|
@ -352,6 +355,7 @@ class TestGroupedOrderDetailView:
|
||||||
"last_name": "Nom",
|
"last_name": "Nom",
|
||||||
"phone": "0645632569",
|
"phone": "0645632569",
|
||||||
"email": "test@mail.fr",
|
"email": "test@mail.fr",
|
||||||
|
"note": "",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
assert response.status_code == 200
|
assert response.status_code == 200
|
||||||
|
@ -454,6 +458,7 @@ class TestGroupedOrderDetailView:
|
||||||
"last_name": "Nom",
|
"last_name": "Nom",
|
||||||
"phone": "0645632569",
|
"phone": "0645632569",
|
||||||
"email": "test@mail.fr",
|
"email": "test@mail.fr",
|
||||||
|
"note": "",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
assert response.status_code == 200
|
assert response.status_code == 200
|
||||||
|
@ -500,6 +505,7 @@ class TestGroupedOrderDetailView:
|
||||||
"last_name": "Nom",
|
"last_name": "Nom",
|
||||||
"phone": "0645632569",
|
"phone": "0645632569",
|
||||||
"email": "test@mail.fr",
|
"email": "test@mail.fr",
|
||||||
|
"note": "",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
assert response.status_code == 200
|
assert response.status_code == 200
|
||||||
|
@ -546,6 +552,7 @@ class TestGroupedOrderDetailView:
|
||||||
"last_name": "Nom",
|
"last_name": "Nom",
|
||||||
"phone": "0645632569",
|
"phone": "0645632569",
|
||||||
"email": "test@mail.fr",
|
"email": "test@mail.fr",
|
||||||
|
"note": "",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
assert response.status_code == 302 # success : first order
|
assert response.status_code == 302 # success : first order
|
||||||
|
@ -557,6 +564,7 @@ class TestGroupedOrderDetailView:
|
||||||
"last_name": "Nom",
|
"last_name": "Nom",
|
||||||
"phone": "0645632569",
|
"phone": "0645632569",
|
||||||
"email": "test@mail.fr",
|
"email": "test@mail.fr",
|
||||||
|
"note": "",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
assert response.status_code == 200 # error
|
assert response.status_code == 200 # error
|
||||||
|
@ -611,6 +619,7 @@ class TestGroupedOrderDetailView:
|
||||||
"last_name": "Nom",
|
"last_name": "Nom",
|
||||||
"phone": "0645632569",
|
"phone": "0645632569",
|
||||||
"email": "test@mail.fr",
|
"email": "test@mail.fr",
|
||||||
|
"note": "",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
assert response.status_code == 302
|
assert response.status_code == 302
|
||||||
|
@ -673,6 +682,7 @@ class TestGroupedOrderOverview:
|
||||||
"last_name": "Nom",
|
"last_name": "Nom",
|
||||||
"phone": "0645632569",
|
"phone": "0645632569",
|
||||||
"email": "test@mail.fr",
|
"email": "test@mail.fr",
|
||||||
|
"note": "",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
response = client_log.get(overview_url)
|
response = client_log.get(overview_url)
|
||||||
|
@ -817,6 +827,7 @@ class TestOrder:
|
||||||
"last_name": "Nom",
|
"last_name": "Nom",
|
||||||
"phone": "0645632569",
|
"phone": "0645632569",
|
||||||
"email": "test@mail.fr",
|
"email": "test@mail.fr",
|
||||||
|
"note": "",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
assert response.status_code == 403
|
assert response.status_code == 403
|
||||||
|
@ -864,6 +875,7 @@ class TestOrder:
|
||||||
"last_name": "Nom",
|
"last_name": "Nom",
|
||||||
"phone": "0645632569",
|
"phone": "0645632569",
|
||||||
"email": "test@mail.fr",
|
"email": "test@mail.fr",
|
||||||
|
"note": "",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
assert response.status_code == 200
|
assert response.status_code == 200
|
||||||
|
@ -922,6 +934,7 @@ class TestOrder:
|
||||||
"last_name": "Nom",
|
"last_name": "Nom",
|
||||||
"phone": "0645632569",
|
"phone": "0645632569",
|
||||||
"email": "test@mail.fr",
|
"email": "test@mail.fr",
|
||||||
|
"note": "",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
assert response.status_code == 302
|
assert response.status_code == 302
|
||||||
|
|
|
@ -35,10 +35,11 @@ def order(request, grouped_order_id):
|
||||||
last_name = request.POST["last_name"]
|
last_name = request.POST["last_name"]
|
||||||
phone = request.POST["phone"]
|
phone = request.POST["phone"]
|
||||||
email = request.POST["email"]
|
email = request.POST["email"]
|
||||||
|
note = request.POST["note"]
|
||||||
author = OrderAuthor.objects.create(
|
author = OrderAuthor.objects.create(
|
||||||
first_name=first_name, last_name=last_name, email=email, phone=phone
|
first_name=first_name, last_name=last_name, email=email, phone=phone
|
||||||
)
|
)
|
||||||
order = Order.objects.create(author=author, grouped_order=grouped_order)
|
order = Order.objects.create(author=author, grouped_order=grouped_order, note=note)
|
||||||
|
|
||||||
# add items to the order
|
# add items to the order
|
||||||
error_message = None
|
error_message = None
|
||||||
|
|
Loading…
Reference in a new issue