Allow deletion of a product from the interface

This commit is contained in:
Daniel Atwood 2020-04-07 13:45:03 +02:00
parent 0b6bdfb768
commit 8580c98291
5 changed files with 31 additions and 15 deletions

9
TODO
View file

@ -12,17 +12,18 @@ x Faciliter la duplication de distribution
x Si un produit est en rupture de stock, alors il n'est pas compté dans les totaux x Si un produit est en rupture de stock, alors il n'est pas compté dans les totaux
x Permettre la suppression de producteurs x Permettre la suppression de producteurs
x Ajouter une info « prix mis à jour » pour les référent⋅e⋅s x Ajouter une info « prix mis à jour » pour les référent⋅e⋅s
x Gérer les frais de livraison
Permettre la supression des produits (terminer) x Ajouter une note explicative pour la répartition des chèques
x Permettre la supression des produits (terminer)
Gérer le souci d'URL pour l'édition d'Apiluly Gérer le souci d'URL pour l'édition d'Apiluly
Rendre le formulaire d'édition producteur plus compact Rendre le formulaire d'édition producteur plus compact
Gérer les frais de livraison Faire un refactoring des modèles
Repasser sur les tests
Rendre plus visible l'action de modifier une commande Rendre plus visible l'action de modifier une commande
Ajouter la trame (agenda dune distribution) dans la boite à outil du coordinateur Ajouter la trame (agenda dune distribution) dans la boite à outil du coordinateur
Explorer la possibilité de faire des ajustements automatiques Explorer la possibilité de faire des ajustements automatiques
Ajouter une note explicative pour la répartition des chèques
Éditer directement depuis la vue « distribution » Éditer directement depuis la vue « distribution »

View file

@ -439,6 +439,11 @@ class Delivery(PersistedBase):
product = self.get_product(ref) product = self.get_product(ref)
if product: if product:
self.products.remove(product) self.products.remove(product)
for order in self.orders.values():
if product.ref in order.products:
order.products.pop(product.ref)
return product return product
def total_for_producer(self, producer, person=None, include_shipping=True): def total_for_producer(self, producer, person=None, include_shipping=True):

View file

@ -3,11 +3,22 @@
{% block toplink %}<a href="/distribution/{{ delivery.id }}/{{ producer.id }}/éditer">↶ Retourner aux produits de {{ producer.name }}</a>{% endblock %} {% block toplink %}<a href="/distribution/{{ delivery.id }}/{{ producer.id }}/éditer">↶ Retourner aux produits de {{ producer.name }}</a>{% endblock %}
{% block body %} {% block body %}
{% if product.ref %}
<h1>Modifier le produit « {{ product.name }} »</h1> <div class="header">
{% else %} {% if product.ref %}
<h1>{{ producer.name }} : Nouveau produit</h1> <h1>Modifier le produit « {{ product.name }} »</h1>
{% endif %} {% else %}
<h1>{{ producer.name }} : Nouveau produit</h1>
{% endif %}
<div class="pure-menu pure-menu-horizontal">
<ul class="pure-menu-list">
<li class="pure-menu-item">
<a class="pure-menu-link" href="/distribution/{{ delivery.id}}/{{ producer.id }}/{{ product.ref }}/supprimer">Supprimer ce produit</a>
</li>
</ul>
</div>
</div>
<form method="post"> <form method="post">
<label> <label>
<p>Nom</p> <p>Nom</p>

View file

@ -27,7 +27,7 @@
<h1>Ajouter un⋅e producteur⋅rice</h1> <h1>Ajouter un⋅e producteur⋅rice</h1>
{% endif %} {% endif %}
</div> </div>
{% if producer.needs_price_update(delivery) %} {% if producer and producer.needs_price_update(delivery) %}
<p class="notification info">Les prix pour {{ producer.name }} ont besoin d'être validés.</p> <p class="notification info">Les prix pour {{ producer.name }} ont besoin d'être validés.</p>
{% endif %} {% endif %}
<form method="post"> <form method="post">
@ -36,7 +36,7 @@
{% else %} {% else %}
<label> <label>
<p>Nom</p> <p>Nom</p>
<input type="text" name="name" value="{{ proneeds_price_updateducer.name or '' }}"> <input type="text" name="name" value="{{ producer.name or '' }}">
</label> </label>
{% endif %} {% endif %}
<label> <label>

View file

@ -123,8 +123,7 @@ async def create_producer(request, response, delivery_id):
response.redirect = f"/distribution/{delivery.id}/{producer.id}/éditer" response.redirect = f"/distribution/{delivery.id}/{producer.id}/éditer"
response.html( response.html(
"products/edit_producer.html", "products/edit_producer.html", {"delivery": delivery, "producer": producer}
{"delivery": delivery, "producer": producer or None},
) )
@ -164,7 +163,7 @@ async def edit_product(request, response, delivery_id, producer_id, product_ref)
@app.route("/distribution/{delivery_id}/{producer_id}/valider-prix", methods=["GET"]) @app.route("/distribution/{delivery_id}/{producer_id}/valider-prix", methods=["GET"])
async def mark_prices_as_ok(request, response, delivery_id, producer_id): async def mark_producer_prices_as_ok(request, response, delivery_id, producer_id):
delivery = Delivery.load(delivery_id) delivery = Delivery.load(delivery_id)
producer = delivery.producers.get(producer_id) producer = delivery.producers.get(producer_id)
@ -180,7 +179,7 @@ async def mark_prices_as_ok(request, response, delivery_id, producer_id):
@app.route("/distribution/{delivery_id}/valider-prix", methods=["GET"]) @app.route("/distribution/{delivery_id}/valider-prix", methods=["GET"])
async def mark_prices_as_ok(request, response, delivery_id): async def mark_all_prices_as_ok(request, response, delivery_id):
delivery = Delivery.load(delivery_id) delivery = Delivery.load(delivery_id)
for product in delivery.products: for product in delivery.products: