feat: le tel n'est plus obligatoire quand l'organisateur a choisi ça

Affichage de "faciltatif" dans le formulaire de commande
This commit is contained in:
Laetitia 2024-10-20 15:57:41 +02:00 committed by Laetitia Getti
parent 6a82102ef0
commit 8adc700005
7 changed files with 71 additions and 16 deletions

View file

@ -34,7 +34,7 @@ class GroupedOrderForm(forms.ModelForm):
"delivery_slot",
"place",
"description",
"phone_mandatory"
"phone_mandatory",
]
widgets = {
"name": forms.TextInput(

View file

@ -0,0 +1,19 @@
# Generated by Django 4.2 on 2024-10-20 13:02
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("order", "0027_groupedorder_phone_mandatory"),
]
operations = [
migrations.AlterField(
model_name="order",
name="created_date",
field=models.DateTimeField(
auto_now_add=True, verbose_name="Date et heure de commande"
),
),
]

View file

@ -27,7 +27,9 @@ class GroupedOrder(models.Model):
description = models.TextField("Description", null=True, blank=True)
total_price = models.DecimalField(max_digits=10, decimal_places=2, default=0)
code = models.CharField(auto_created=True)
phone_mandatory = models.BooleanField(default=False, verbose_name="Numéro de téléphone obligatoire")
phone_mandatory = models.BooleanField(
default=False, verbose_name="Numéro de téléphone obligatoire"
)
def create_code_from_pk(self):
"""When a grouped order is created, a unique code is generated, to be used to

View file

@ -158,9 +158,11 @@
value="{{ order_author.last_name }}" required></p>
</div>
<div class="column">
<p><label for="phone">Numéro de téléphone :</label>
<input id="phone" type="tel" pattern="[0-9]{10}" placeholder="0601020304" name="phone"
value="{{ order_author.phone }}" required></p>
<p><label for="phone">Numéro de téléphone {% if not phone_required %}<em>(facultatif)</em> {% endif %}:</label>
<input id="phone" type="tel" pattern="[0-9]{10}"
placeholder="0601020304" name="phone"
value="{{ order_author.phone }}"
{% if phone_required %}required{% endif %}></p>
<p><label for="email">Adresse mail : </label>
<input id="email" type="email" placeholder="exemple@mail.fr" name="email"
value="{{ order_author.email }}" required></p>
@ -199,11 +201,5 @@
el.innerHTML = total_price;
})
});
if( '{{ phone_required }}' === 'True') {
document.getElementById('phone').required = true
}
{% endblock %}
</script>

View file

@ -662,6 +662,36 @@ class TestGroupedOrderDetailView:
assert order.price == 4
assert item.get_remaining_nb() == 16
def test_phone_not_required_display(self, client, other_user):
"""a user orders something without entering phone when it is required"""
grouped_order = create_grouped_order(
days_before_delivery_date=5,
days_before_deadline=2,
name="gr order test",
orga_user=other_user,
)
assert grouped_order.phone_mandatory == True
item = models.Item.objects.create(
name="test item 1", grouped_order=grouped_order, price=1, max_limit=2
)
detail_url = reverse(
"order:grouped_order_detail",
kwargs={
"code": grouped_order.code,
},
)
response = client.get(detail_url)
assert response.status_code == 200
assert "gr order test" in response.content.decode()
assert (
"Numéro de téléphone <em>(facultatif)</em>" not in response.content.decode()
)
grouped_order.phone_mandatory = False
grouped_order.save()
response = client.get(detail_url)
assert "gr order test" in response.content.decode()
assert "Numéro de téléphone <em>(facultatif)</em>" in response.content.decode()
class TestGroupedOrderOverview:
def test_get_overview(self, client_log):

View file

@ -9,12 +9,20 @@ pytestmark = pytest.mark.django_db
def create_grouped_order(
days_before_delivery_date, days_before_deadline, name, orga_user
days_before_delivery_date,
days_before_deadline,
name,
orga_user,
phone_mandatory=True,
):
date = timezone.now().date() + datetime.timedelta(days=days_before_delivery_date)
deadline = timezone.now() + datetime.timedelta(days=days_before_deadline)
grouped_order = models.GroupedOrder.objects.create(
name=name, orga=orga_user, delivery_date=date, deadline=deadline
name=name,
orga=orga_user,
delivery_date=date,
deadline=deadline,
phone_mandatory=phone_mandatory,
)
grouped_order.create_code_from_pk()
grouped_order.save()