values remain in the form when an error is raised

This commit is contained in:
Laetitia Getti 2023-07-24 18:15:48 +02:00
parent 5c7bcac49b
commit d1b58ea5b7
3 changed files with 30 additions and 12 deletions

View file

@ -79,7 +79,7 @@
{% csrf_token %} {% csrf_token %}
<td>{{ item.name }}</td> <td>{{ item.name }}</td>
<td>{{ item.price }} €</td> <td>{{ item.price }} €</td>
<td><input name="quantity_{{ item.id }}" size="2" type="number" value="0" min="0" {% if item.get_remaining_nb == 0 %}disabled{% endif %}></input> <td><input name="quantity_{{ item.id }}" size="4" type="number" value="0" min="0" {% if item.get_remaining_nb == 0 %}disabled{% endif %}></input>
{% if item.get_remaining_nb is not null %} {% if item.get_remaining_nb is not null %}
<span class="is-italic mini-title"> <span class="is-italic mini-title">
{% if item.get_remaining_nb == 0 %}Produit épuisé {% if item.get_remaining_nb == 0 %}Produit épuisé
@ -104,7 +104,7 @@
<p>{{ item.price }} €</p> <p>{{ item.price }} €</p>
</div> </div>
<div class="card-footer-item"> <div class="card-footer-item">
<td><input name="quantity_{{ item.id }}" size="2" type="number" value="0" min="0" {% if item.get_remaining_nb == 0 %}disabled{% endif %}></input></td> <td><input name="quantity_{{ item.id }}" size="4" type="number" value="0" min="0" {% if item.get_remaining_nb == 0 %}disabled{% endif %}></input></td>
{% if item.get_remaining_nb is not null %} {% if item.get_remaining_nb is not null %}
<span class="is-italic mini-title"> <span class="is-italic mini-title">
{% if item.get_remaining_nb == 0 %}Produit épuisé {% if item.get_remaining_nb == 0 %}Produit épuisé
@ -118,24 +118,26 @@
</div> </div>
{% if error_message %}<p class="has-text-danger">{{ error_message }}</p>{% endif %} {% if error_message %}<p class="has-text-danger">{{ error_message }}</p>{% endif %}
{% comment %} The value attribute is used when the form is redered with error messages,
in order not to loose entered values {% endcomment %}
<br> <br>
<p class="subtitle">Vos informations</p> <p class="subtitle">Vos informations</p>
<div class="columns"> <div class="columns">
<div class="column"> <div class="column">
<p><label for="first_name">Prénom : </label> <p><label for="first_name">Prénom : </label>
<input id="first_name" type="text" name="first_name" placeholder="Votre prénom" required></p> <input id="first_name" type="text" name="first_name" placeholder="Votre prénom" value="{{ first_name }}" required></p>
<p><label for="first_name">Nom : </label> <p><label for="first_name">Nom : </label>
<input id="last_name" type="text" name="last_name" placeholder="Votre nom" required></p> <input id="last_name" type="text" name="last_name" placeholder="Votre nom" value="{{ last_name }}" required></p>
</div> </div>
<div class="column"> <div class="column">
<p><label for="phone">Numéro de téléphone :</label> <p><label for="phone">Numéro de téléphone :</label>
<input id="phone" type="text" placeholder="0601020304" name="phone" required></p> <input id="phone" type="text" placeholder="0601020304" name="phone" value="{{ phone }}" required></p>
<p><label for="email">Adresse mail : </label> <p><label for="email">Adresse mail : </label>
<input id="email" type="email" placeholder="exemple@mail.fr" name="email" required></p> <input id="email" type="email" placeholder="exemple@mail.fr" name="email" value="{{ email }}" required></p>
</div> </div>
</div> </div>
<p><label for="phone">Note à l'organisateur·ice</label> <p><label for="note">Note à l'organisateur·ice</label>
<textarea id="note" rows=3 placeholder="(facultatif)" name="note"></textarea></p> <textarea id="note" rows=3 placeholder="(facultatif)" name="note">{{ 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">

View file

@ -319,7 +319,7 @@ class TestGroupedOrderDetailView:
""" """
From the OrderDetailView, we order without having changed any item quantity. From the OrderDetailView, we order without having changed any item quantity.
An error is raised. An error is raised.
The order is deleted The order is deleted, and the form is displayed without deleting entered values
""" """
grouped_order = create_grouped_order( grouped_order = create_grouped_order(
days_before_delivery_date=5, days_before_delivery_date=5,
@ -351,11 +351,11 @@ class TestGroupedOrderDetailView:
order_url, order_url,
{ {
f"quantity_{item.pk}": [0, 0], f"quantity_{item.pk}": [0, 0],
"first_name": "Prénom", "first_name": "Prénom test",
"last_name": "Nom", "last_name": "Nom test",
"phone": "0645632569", "phone": "0645632569",
"email": "test@mail.fr", "email": "test@mail.fr",
"note": "", "note": "test note",
}, },
) )
assert response.status_code == 200 assert response.status_code == 200
@ -363,6 +363,12 @@ class TestGroupedOrderDetailView:
response.context["error_message"] response.context["error_message"]
== "Veuillez commander au moins un produit" == "Veuillez commander au moins un produit"
) )
assert response.context["first_name"] == "Prénom test"
assert "Prénom test" in response.content.decode()
assert "Nom test" in response.content.decode()
assert "0645632569" in response.content.decode()
assert "test@mail.fr" in response.content.decode()
assert "test note" in response.content.decode()
assert not models.Order.objects.first() assert not models.Order.objects.first()
assert not models.OrderAuthor.objects.first() assert not models.OrderAuthor.objects.first()

View file

@ -64,6 +64,11 @@ def order(request, grouped_order_id):
{ {
"grouped_order": grouped_order, "grouped_order": grouped_order,
"error_message": error_message, "error_message": error_message,
"first_name": author.first_name,
"last_name": author.last_name,
"phone": author.phone,
"email": author.email,
"note": order.note,
}, },
) )
@ -80,6 +85,11 @@ def order(request, grouped_order_id):
{ {
"grouped_order": grouped_order, "grouped_order": grouped_order,
"error_message": error_message, "error_message": error_message,
"first_name": author.first_name,
"last_name": author.last_name,
"phone": author.phone,
"email": author.email,
"note": order.note,
}, },
) )