simplifying code

This commit is contained in:
Laetitia Getti 2023-07-31 12:24:48 +02:00 committed by Laetitia Getti
parent eaa365dccd
commit e4bd680fe2
9 changed files with 41 additions and 43 deletions

View file

@ -138,15 +138,15 @@
<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" value="{{ first_name }}" required></p>
<input id="first_name" type="text" name="first_name" placeholder="Votre prénom" value="{{ author.first_name }}" required></p>
<p><label for="first_name">Nom : </label>
<input id="last_name" type="text" name="last_name" placeholder="Votre nom" value="{{ last_name }}" required></p>
<input id="last_name" type="text" name="last_name" placeholder="Votre nom" value="{{ 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="{{ phone }}" required></p>
<input id="phone" type="tel" pattern="[0-9]{10}" placeholder="0601020304" name="phone" value="{{ author.phone }}" required></p>
<p><label for="email">Adresse mail : </label>
<input id="email" type="email" placeholder="exemple@mail.fr" name="email" value="{{ email }}" required></p>
<input id="email" type="email" placeholder="exemple@mail.fr" name="email" value="{{ author.email }}" required></p>
</div>
</div>
<p><label for="note">Note à l'organisateur·ice</label>
@ -170,13 +170,13 @@
function findTotal(){
var inputs = document.getElementsByTagName("input");
total_price = 0;
for (x = 0 ; x < inputs.length ; x++){
input_name = inputs[x].getAttribute("name");
for(let input of inputs){
input_name = input.getAttribute("name");
if(input_name.indexOf("quantity_")==0){ // get the quantities inputs only
item_id = input_name.split("_")[1];
prices = {{ prices_dict | safe }};
total_price += prices[item_id] * inputs[x].value;
console.log(prices[item_id] * inputs[x].value);
total_price += prices[item_id] * input.value;
console.log(prices[item_id] * input.value);
}
}
console.log(total_price);

View file

@ -182,7 +182,7 @@
<div class="columns">
<div class="column">
{% for item in order.ordered_items.all %}
{{ item.nb }} x {{ item.item.name }}
{{ item.nb }} × {{ item.item.name }}
<hr class="mb-0 mt-1">
{% endfor %}
</div>
@ -214,7 +214,7 @@
<div class="columns">
<div class="column">
{% for item in order.ordered_items.all %}
{{ item.nb }} x {{ item.item.name }}
{{ item.nb }} × {{ item.item.name }}
<hr class="mb-0 mt-1">
{% endfor %}
</div>

View file

@ -15,7 +15,7 @@
<p><strong>Votre commande</strong></p>
<ul>
{% for item in order.ordered_items.all %}
<li>{{ item.nb }} x {{ item.item }} : {{ item.get_price }} €</li>
<li>{{ item.nb }} × {{ item.item }} : {{ item.get_price }} €</li>
{% endfor %}
</ul>
<p>Prix total de la commande : <strong>{{ order.price }} €</strong>

View file

@ -258,14 +258,15 @@ class TestGroupedOrderDetailView:
)
item.refresh_from_db()
item2.refresh_from_db()
assert models.OrderAuthor.objects.first().first_name == "Prénom"
assert models.OrderAuthor.objects.first().email == "test@mail.fr"
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()
author = models.OrderAuthor.objects.first()
order = models.Order.objects.first()
assert author.first_name == "Prénom"
assert author.email == "test@mail.fr"
assert author.phone == "0645632569"
assert order.note == "note test"
assert order.created_date.date() == timezone.now().date()
assert item.ordered_nb == 4
assert item2.ordered_nb == 1
order = models.Order.objects.first()
assert order.ordered_items.count() == 2
assert order.articles_nb == 5
assert order.price == 9
@ -321,12 +322,13 @@ 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 response.context["author"].first_name == "Prénom test"
content = response.content.decode()
assert "Prénom test" in content
assert "Nom test" in content
assert "0645632569" in content
assert "test@mail.fr" in content
assert "test note" in content
assert not models.Order.objects.first()
assert not models.OrderAuthor.objects.first()

View file

@ -15,7 +15,7 @@ pytestmark = pytest.mark.django_db
class TestOrder:
def test_order_deadline_passed(self, client, other_user):
def test_order_deadline_passed__raise_errors(self, client, other_user):
"""A user orders when the deadline is passed. They get a 403 error"""
grouped_order = create_grouped_order(
days_before_delivery_date=5,
@ -47,7 +47,7 @@ class TestOrder:
)
assert response.status_code == 403
def test_order_deadline_passed__orga(self, client_log):
def test_order_deadline_passed__still_works_for_orga(self, client_log):
"""The orga user orders when the deadline is passed, but the delivery is to come. It works"""
grouped_order = create_grouped_order(

View file

@ -13,7 +13,7 @@ urlpatterns = [
views.GroupedOrderOverview.as_view(),
name="grouped_order_overview",
),
path("<int:grouped_order_id>/commander/", views.order, name="order"),
path("<int:grouped_order_id>/commander/", views.place_order, name="order"),
path(
"<int:grouped_order_id>/<int:pk>/confirmation/",
views.OrderDetailView.as_view(),

View file

@ -7,6 +7,6 @@ from .grouped_order import (DownloadGroupedOrderSheetView,
GroupedOrderSheetView, GroupedOrderUpdateView,
IndexView)
from .item import ItemCreateView, ItemDeleteView
from .order import OrderDeleteView, OrderDetailView, order
from .order import OrderDeleteView, OrderDetailView, place_order
# fmt: on

View file

@ -7,17 +7,19 @@ from django.views import generic
from ..models import GroupedOrder, Order, OrderAuthor, OrderedItem
def order(request, grouped_order_id):
def place_order(request, grouped_order_id):
"""Creates an AnonymousUser, and an Order for this GroupedOrder, with related OrderedItems"""
grouped_order = get_object_or_404(GroupedOrder, pk=grouped_order_id)
# check if the grouped order is ongoing or if the user is allowed to order
if request.user != grouped_order.orga:
if not grouped_order.is_ongoing():
return http.HttpResponseForbidden()
else:
if not grouped_order.is_to_be_delivered():
return http.HttpResponseForbidden()
user_is_orga = request.user == grouped_order.orga
is_to_be_delivered = grouped_order.is_to_be_delivered()
is_ongoing = grouped_order.is_ongoing()
access_allowed = is_ongoing or (user_is_orga and is_to_be_delivered)
if not access_allowed:
return http.HttpResponseForbidden()
# get a dict with quantity_{{item_id}}:[ {{ quantity on phone }},{{ quantity on desktop }} ]
orders_dict = {
@ -69,11 +71,8 @@ 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,
"author": author,
},
)
@ -90,11 +89,8 @@ 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,
"author": author,
},
)

View file

@ -32,7 +32,7 @@ dev = [
[tool.pytest.ini_options]
DJANGO_SETTINGS_MODULE = "la_chariotte.settings"
addopts = "--isort --black --reuse-db --cov-report xml --cov-report term-missing --cov=la_chariotte -p no:warnings"
addopts = "-x --ff --isort --black --reuse-db --cov-report xml --cov-report term-missing --cov=la_chariotte -p no:warnings"
isort_ignore = ["*migrations/*.py"]
[tool.isort]