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 Permettre la suppression de producteurs
x Ajouter une info « prix mis à jour » pour les référent⋅e⋅s
Permettre la supression des produits (terminer)
x Gérer les frais de livraison
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
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
Ajouter la trame (agenda dune distribution) dans la boite à outil du coordinateur
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 »

View file

@ -439,6 +439,11 @@ class Delivery(PersistedBase):
product = self.get_product(ref)
if product:
self.products.remove(product)
for order in self.orders.values():
if product.ref in order.products:
order.products.pop(product.ref)
return product
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 body %}
<div class="header">
{% if product.ref %}
<h1>Modifier le produit « {{ product.name }} »</h1>
{% 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">
<label>
<p>Nom</p>

View file

@ -27,7 +27,7 @@
<h1>Ajouter un⋅e producteur⋅rice</h1>
{% endif %}
</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>
{% endif %}
<form method="post">
@ -36,7 +36,7 @@
{% else %}
<label>
<p>Nom</p>
<input type="text" name="name" value="{{ proneeds_price_updateducer.name or '' }}">
<input type="text" name="name" value="{{ producer.name or '' }}">
</label>
{% endif %}
<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.html(
"products/edit_producer.html",
{"delivery": delivery, "producer": producer or None},
"products/edit_producer.html", {"delivery": delivery, "producer": producer}
)
@ -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"])
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)
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"])
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)
for product in delivery.products: