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 %}
<td>{{ item.name }}</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 %}
<span class="is-italic mini-title">
{% if item.get_remaining_nb == 0 %}Produit épuisé
@ -104,7 +104,7 @@
<p>{{ item.price }} €</p>
</div>
<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 %}
<span class="is-italic mini-title">
{% if item.get_remaining_nb == 0 %}Produit épuisé
@ -118,24 +118,26 @@
</div>
{% 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>
<p class="subtitle">Vos informations</p>
<div class="columns">
<div class="column">
<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>
<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 class="column">
<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>
<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>
<p><label for="phone">Note à l'organisateur·ice</label>
<textarea id="note" rows=3 placeholder="(facultatif)" name="note"></textarea></p>
<p><label for="note">Note à l'organisateur·ice</label>
<textarea id="note" rows=3 placeholder="(facultatif)" name="note">{{ note }}</textarea></p>
<div class="buttons">
<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.
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(
days_before_delivery_date=5,
@ -351,11 +351,11 @@ class TestGroupedOrderDetailView:
order_url,
{
f"quantity_{item.pk}": [0, 0],
"first_name": "Prénom",
"last_name": "Nom",
"first_name": "Prénom test",
"last_name": "Nom test",
"phone": "0645632569",
"email": "test@mail.fr",
"note": "",
"note": "test note",
},
)
assert response.status_code == 200
@ -363,6 +363,12 @@ class TestGroupedOrderDetailView:
response.context["error_message"]
== "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.OrderAuthor.objects.first()

View file

@ -64,6 +64,11 @@ def order(request, grouped_order_id):
{
"grouped_order": grouped_order,
"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,
"error_message": error_message,
"first_name": author.first_name,
"last_name": author.last_name,
"phone": author.phone,
"email": author.email,
"note": order.note,
},
)