mirror of
https://github.com/almet/copanier.git
synced 2025-04-28 11:32:38 +02:00
Reorganize URLs and templates.
Reorganizing the URLs seems to fix an issue with namespace collision in the URLs. - URLs for product related operations are now in the /produits/ namespace ; - Templates are now using a formalism of action_subject.html, which makes it simpler to find find them.
This commit is contained in:
parent
8e3e31f98d
commit
80a61066a0
24 changed files with 92 additions and 133 deletions
|
@ -12,7 +12,7 @@
|
|||
</li>
|
||||
{% endif %}
|
||||
<li class="pure-menu-item">
|
||||
<a class="pure-menu-link" href="/distribution/{{ delivery.id }}/produits"><i class="icon-pencil"></i> Gérer les produits / product⋅eur⋅rice⋅s</a>
|
||||
<a class="pure-menu-link" href="/produits/{{ delivery.id }}"><i class="icon-pencil"></i> Gérer les produits / product⋅eur⋅rice⋅s</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
|
@ -21,7 +21,7 @@
|
|||
<li class="pure-menu-item pure-menu-has-children pure-menu-allow-hover">
|
||||
<a href="#" class="pure-menu-link"><i class="icon-printer"></i> Imprimer…</a>
|
||||
<ul class="pure-menu-children">
|
||||
<li class="pure-menu-item"><a href="/distribution/{{ delivery.id }}/produits.pdf" class="pure-menu-link"><i class="icon-ribbon"></i> Commande producteurs⋅rices</a></li>
|
||||
<li class="pure-menu-item"><a href="/produits/{{ delivery.id }}/produits.pdf" class="pure-menu-link"><i class="icon-ribbon"></i> Commande producteurs⋅rices</a></li>
|
||||
<li class="pure-menu-item"><a href="/distribution/{{ delivery.id }}/émargement" class="pure-menu-link"><i class="icon-grid"></i> Résumé de commande par groupe</a></li>
|
||||
<li class="pure-menu-item"><a href="/distribution/{{ delivery.id }}/solde" class="pure-menu-link"><i class="icon-wallet"></i> Répartition des paiements</a></li>
|
||||
</ul>
|
||||
|
@ -38,7 +38,7 @@
|
|||
<a class="pure-menu-link" href="/distribution/{{ delivery.id }}/edit"><i class="icon-adjustments"></i> Modifier la distrib</a>
|
||||
</li>
|
||||
<li class="pure-menu-item">
|
||||
<a class="pure-menu-link" href="/distribution/{{ delivery.id }}/produits"><i class="icon-pricetags"></i> Produits</a>
|
||||
<a class="pure-menu-link" href="/produits/{{ delivery.id }}"><i class="icon-pricetags"></i> Produits</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
</ul
|
||||
|
@ -54,7 +54,7 @@
|
|||
{% if delivery.has_products %}
|
||||
{% for (id, producer) in delivery.get_producers_for_referent(request.user.email).items() %}
|
||||
{% if producer.needs_price_update(delivery) %}
|
||||
<p class="notification info">Merci de <a href="/distribution/{{ delivery.id}}/{{ producer.id}}/éditer">mettre à jour les prix pour « {{ producer.name }} ».</a></p>
|
||||
<p class="notification info">Merci de <a href="/produits/{{ delivery.id }}/producteurs/{{ producer.id}}">mettre à jour les prix pour « {{ producer.name }} ».</a></p>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% include "includes/delivery_table.html" %}
|
||||
|
@ -64,8 +64,8 @@
|
|||
{% if request.user and request.user.is_staff %}
|
||||
Occupons-nous donc de ça ! Deux options :
|
||||
<ol>
|
||||
<li><a href="/producteurices/créer/{{ delivery.id }}">Ajouter les product⋅eurs⋅rices</a> à la main ;</li>
|
||||
<li>Ou bien <a href="/distribution/{{ delivery.id }}/copier">copier les produits d'une autre distribution</a>.</li>
|
||||
<li><a href="/produits/{{ delivery.id }}/producteurs/créer">Ajouter les product⋅eurs⋅rices</a> à la main ;</li>
|
||||
<li>Ou bien <a href="/produits/{{ delivery.id }}/copier">copier les produits d'une autre distribution</a>.</li>
|
||||
</ol>
|
||||
</div>
|
||||
{% endif %}
|
|
@ -14,11 +14,11 @@
|
|||
|
||||
<h3>Avant et pendant la distribution</h3>
|
||||
<a class="button" href="/distribution/{{ delivery.id }}/edit"><i class="icon-pencil"></i> Modifier la commande (dates, lieu, référent⋅e, etc)</a>
|
||||
<a class="button" href="/distribution/{{ delivery.id }}/products"><i class="icon-pencil"></i> Modifier les produits, les product⋅rices⋅eurs</a>
|
||||
<a class="button" href="/produits/{{ delivery.id }}"><i class="icon-pencil"></i> Modifier les produits, les product⋅rices⋅eurs</a>
|
||||
<a class="button" href="/groupes"><i class="icon-globe"></i> Gérer les groupes / colocs</a>
|
||||
|
||||
<h3>Une fois les commandes passées (après le {{ delivery.order_before|date }})</h3>
|
||||
<a class="button" href="/distribution/{{ delivery.id }}/products.pdf"><i class="icon-download"></i> Télécharger les bons de distribution</a>
|
||||
<a class="button" href="/produits/{{ delivery.id }}/produits.pdf"><i class="icon-download"></i> Télécharger les bons de distribution</a>
|
||||
<a class="button" href="/distribution/{{ delivery.id }}/rapport-complet.xlsx"><i class="icon-download"></i> Télécharger le tableau des commandes</a>
|
||||
<a class="button" href="/distribution/{{ delivery.id }}/envoi-email-referentes"><i class="icon-envelope"></i> Envoyer les infos de commande aux référent⋅e⋅s</a>
|
||||
|
|
@ -9,13 +9,13 @@
|
|||
{% if producer_obj.needs_price_update(delivery) %}*{% endif %}
|
||||
{% if edit_mode or request.user.is_staff or producer_obj.referent == request.user.email %}
|
||||
<span class="edit">
|
||||
<a class="button" href="/distribution/{{ delivery.id }}/{{ producer_obj.id }}/éditer"><i class="icon-ribbon"></i> Gérer ce⋅tte producteur⋅rice</a>
|
||||
<a class="button" href="/produits/{{ delivery.id }}/producteurs/{{ producer_obj.id }}"><i class="icon-ribbon"></i> Gérer ce⋅tte producteur⋅rice</a>
|
||||
</span>
|
||||
{% endif %}
|
||||
</h2>
|
||||
<h5>{% if producer_obj.description %}{{ producer_obj.description }}{% endif %}. Référent⋅e : <a href="mailto:{{ producer_obj.referent }}">{{ producer_obj.referent_name }}</a> / {{ producer_obj.referent_tel }}</h5>
|
||||
{% if not delivery.get_products_by(producer) %}
|
||||
😔 Ce⋅tte producteur⋅rice n'a pas encore de produits. Voulez vous <a href="/distribution/{{ delivery.id }}/{{ producer }}/ajouter-produit">en rajouter un ?</a>
|
||||
😔 Ce⋅tte producteur⋅rice n'a pas encore de produits. Voulez vous <a href="/produits/{{ delivery.id }}/producteurs/{{ producer }}/produits/créer">en rajouter un ?</a>
|
||||
{% else %}
|
||||
<table class="delivery pure-table">
|
||||
<thead>
|
||||
|
@ -43,7 +43,7 @@
|
|||
<tbody>
|
||||
{% for product in delivery.get_products_by(producer) %}
|
||||
<tr>
|
||||
<th class="product {% if product.rupture %}rupture{% endif %}">{% if edit_mode %}<a href="/distribution/{{ delivery.id }}/{{ product.producer }}/produit/{{ product.ref }}/éditer">{% endif %}{% if edit_mode %}<i class="icon-pencil"></i> {% endif %}{{ product }}{% if edit_mode %}</a>{% endif %}{% if product.rupture %} {{ product.rupture }}{% endif %}
|
||||
<th class="product {% if product.rupture %}rupture{% endif %}">{% if edit_mode %}<a href="/produits/{{ delivery.id }}/producteurs/{{ product.producer }}/produits/{{ product.ref }}">{% endif %}{% if edit_mode %}<i class="icon-pencil"></i> {% endif %}{{ product }}{% if edit_mode %}</a>{% endif %}{% if product.rupture %} {{ product.rupture }}{% endif %}
|
||||
<td>{{ product.price | round(2) }} €</td>
|
||||
{% if delivery.has_packing %}
|
||||
<td class="packing">{% if product.packing %}{{ product.packing }} x {% endif %} {{ product.unit }}</td>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{% extends "base.html" %}
|
||||
{% block toplink %}<a href="/distribution/{{ delivery.id }}/{{producer.id}}/éditer">↶ Retourner a « {{producer.name}} »</a>{% endblock %}
|
||||
{% block toplink %}<a href="/produits/{{ delivery.id }}/producteurs/{{producer.id}}">↶ Retourner a « {{producer.name}} »</a>{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<div class="header">
|
||||
|
|
|
@ -51,13 +51,13 @@
|
|||
</thead>
|
||||
{% for product in products %}
|
||||
<tr>
|
||||
<td><a href="/distribution/{{ delivery.id }}/produit/{{ product.ref }}/éditer">{{ product.name }}</a></td>
|
||||
<td><a href="/produits/{{ delivery.id }}/producteurs/{{ producer.id }}/produits/{{ product.ref }}">{{ product.name }}</a></td>
|
||||
<td>{{ product.price }}€</td>
|
||||
<td>{{ product.unit }}</td>
|
||||
<td>{{ product.description }}</td>
|
||||
<td>{% if product.packing %}{{ product.packing }}{% endif %}</td>
|
||||
<td>{% if product.rupture %}RUPTURE !!{% endif %}</td>
|
||||
<td><a href="/distribution/{{ delivery.id }}/produit/{{ product.ref }}/éditer">éditer</a></td>
|
||||
<td><a href="/produits/{{ delivery.id }}/producteurs/{{ producer.id }}/produits/{{ product.ref }}">éditer</a></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
|
@ -1,5 +1,5 @@
|
|||
{% extends "base.html" %}
|
||||
{% block toplink %}<a href="/distribution/{{ delivery.id }}/produits">↶ Retourner aux produits</a>{% endblock %}
|
||||
{% block toplink %}<a href="/produits/{{ delivery.id }}">↶ Retourner aux produits</a>{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<div class="header">
|
||||
|
@ -8,17 +8,17 @@
|
|||
<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 }}/ajouter-produit">Ajouter un produit</a>
|
||||
<a class="pure-menu-link" href="/produits/{{ delivery.id}}/producteurs/{{ producer.id }}/produits/créer">Ajouter un produit</a>
|
||||
</li>
|
||||
<li class="pure-menu-item">
|
||||
<a class="pure-menu-link" href="/distribution/{{ delivery.id}}/{{ producer.id }}/supprimer">Supprimer</a>
|
||||
<a class="pure-menu-link" href="/produits/{{ delivery.id}}/producteurs/{{ producer.id }}/supprimer">Supprimer</a>
|
||||
</li>
|
||||
<li class="pure-menu-list">
|
||||
<a class="pure-menu-link" href="/distribution/{{ delivery.id}}/{{ producer.id }}/frais-de-livraison">Gérer des frais de livraison</a>
|
||||
<a class="pure-menu-link" href="/produits/{{ delivery.id}}/producteurs/{{ producer.id }}/frais-de-livraison">Gérer des frais de livraison</a>
|
||||
</li>
|
||||
{% if producer.needs_price_update(delivery) %}
|
||||
<li class="pure-menu-item">
|
||||
<a class="pure-menu-link" href="/distribution/{{ delivery.id}}/{{ producer.id }}/valider-prix">Marquer les prix comme OK</a>
|
||||
<a class="pure-menu-link" href="/produits/{{ delivery.id}}/producteurs/{{ producer.id }}/valider-prix">Marquer les prix comme OK</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
|
@ -67,14 +67,14 @@
|
|||
{% if delivery.shipping.get(producer.id) %}
|
||||
<h3>Frais de livraison</h3>
|
||||
Des frais de livraison de {{ delivery.shipping[producer.id] }}€ ont été enregistrés pour ce producteur.
|
||||
<a class="button" href="/distribution/{{ delivery.id}}/{{ producer.id }}/frais-de-livraison">Modifier</a>
|
||||
<a class="button" href="/produits/{{ delivery.id}}/producteurs/{{ producer.id }}/frais-de-livraison">Modifier</a>
|
||||
{% endif %}
|
||||
|
||||
{% if products %}
|
||||
<h3>Produits
|
||||
<a class="button" href="/distribution/{{ delivery.id}}/{{ producer.id }}/ajouter-produit">Ajouter un produit</a>
|
||||
<a class="button" href="/produits/{{ delivery.id}}/producteurs/{{ producer.id }}/produits/créer">Ajouter un produit</a>
|
||||
{% if producer.needs_price_update(delivery) %}
|
||||
<a class="button" href="/distribution/{{ delivery.id}}/{{ producer.id }}/valider-prix">Marquer les prix comme OK</a>
|
||||
<a class="button" href="/produits/{{ delivery.id}}/producteurs/{{ producer.id }}/valider-prix">Marquer les prix comme OK</a>
|
||||
{% endif %}
|
||||
</h3>
|
||||
<p>Vous pouvez éditer les produits en cliquant sur leur nom.</p>
|
||||
|
@ -92,13 +92,13 @@ Des frais de livraison de {{ delivery.shipping[producer.id] }}€ ont été enre
|
|||
</thead>
|
||||
{% for product in products %}
|
||||
<tr>
|
||||
<td><a href="/distribution/{{ delivery.id }}/{{ producer.id }}/produit/{{ product.ref }}/éditer">{{ product.name }}</a></td>
|
||||
<td><a href="/produits/{{ delivery.id }}/producteurs/{{ producer.id }}/produits/{{ product.ref }}">{{ product.name }}</a></td>
|
||||
<td>{{ product.price }}€</td>
|
||||
<td>{{ product.unit }}</td>
|
||||
<td>{{ product.description }}</td>
|
||||
<td>{% if product.packing %}{{ product.packing }}{% endif %}</td>
|
||||
<td>{% if product.rupture %}RUPTURE !!{% endif %}</td>
|
||||
<td><a href="/distribution/{{ delivery.id }}/{{ producer.id }}/{{ product.ref }}/supprimer">supprimer</a></td>
|
||||
<td><a href="/produits/{{ delivery.id }}/producteurs/{{ producer.id }}/produits/{{ product.ref }}/supprimer">supprimer</a></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
|
|
@ -1,22 +1,22 @@
|
|||
{% extends "base.html" %}
|
||||
|
||||
{% block toplink %}<a href="/distribution/{{ delivery.id }}/{{ producer.id }}/éditer">↶ Retourner aux produits de {{ producer.name }}</a>{% endblock %}
|
||||
{% block toplink %}<a href="/produits/{{ delivery.id }}/producteurs/{{ producer.id }}">↶ Retourner aux produits de {{ producer.name }}</a>{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
|
||||
<div class="header">
|
||||
{% if product.ref %}
|
||||
<h1>Modifier le produit « {{ product.name }} »</h1>
|
||||
<div class="pure-menu pure-menu-horizontal">
|
||||
<ul class="pure-menu-list">
|
||||
<li class="pure-menu-item">
|
||||
<a class="pure-menu-link" href="/produits/{{ delivery.id}}/producteurs/{{ producer.id }}/produits/{{ product.ref }}/supprimer">Supprimer ce produit</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
{% 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">
|
||||
|
@ -51,34 +51,5 @@
|
|||
</div>
|
||||
</form>
|
||||
|
||||
{% if products %}
|
||||
<h3>Produits</h3>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Produit</th>
|
||||
<th>Prix</th>
|
||||
<th>Unité</th>
|
||||
<th>Description</th>
|
||||
<th>Packaging</th>
|
||||
<th>Rupture ?</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
{% for product in products %}
|
||||
<tr>
|
||||
<td><a href="/distribution/{{ delivery.id }}/produit/{{ product.ref }}/éditer">{{ product.name }}</a></td>
|
||||
<td>{{ product.price }}€</td>
|
||||
<td>{{ product.unit }}</td>
|
||||
<td>{{ product.description }}</td>
|
||||
<td>{% if product.packing %}{{ product.packing }}{% endif %}</td>
|
||||
<td>{% if product.rupture %}RUPTURE !!{% endif %}</td>
|
||||
<td><a href="/distribution/{{ delivery.id }}/produit/{{ product.ref }}/éditer">éditer</a></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% endif %}
|
||||
|
||||
<hr>
|
||||
{% endblock body %}
|
|
@ -1,5 +1,5 @@
|
|||
{% extends "base.html" %}
|
||||
{% block toplink %}<a href="/distribution/{{ delivery.id }}/produits">↶ Retourner aux produits</a>{% endblock %}
|
||||
{% block toplink %}<a href="/produits/{{ delivery.id }}">↶ Retourner aux produits</a>{% endblock %}
|
||||
|
||||
{% block body %}
|
||||
<div class="header">
|
|
@ -6,19 +6,19 @@
|
|||
<div class="pure-menu pure-menu-horizontal">
|
||||
<ul class="pure-menu-list">
|
||||
<li class="pure-menu-item">
|
||||
<a class="pure-menu-link" href="/producteurices/créer/{{ delivery.id }}"><i class="icon-heart"></i> Ajouter un⋅e producteur⋅rice</a>
|
||||
<a class="pure-menu-link" href="/produits/{{ delivery.id }}/producteurs/créer"><i class="icon-heart"></i> Ajouter un⋅e producteur⋅rice</a>
|
||||
</li>
|
||||
<li class="pure-menu-item">
|
||||
<a class="pure-menu-link" href="/distribution/{{ delivery.id }}/copier"><i class="icon-hotairballoon"></i> Réutiliser les produits d'une autre distrib</a>
|
||||
<a class="pure-menu-link" href="/produits/{{ delivery.id }}/copier"><i class="icon-hotairballoon"></i> Réutiliser les produits d'une autre distrib</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<p class="hide-on-print">
|
||||
{% if producers %}
|
||||
<a href="/distribution/{{ delivery.id }}/producteurices.pdf{% if referent %}?referent={{ referent }}{% endif %}">Télécharger la liste des commandes en PDF</a>
|
||||
<a href="/produits/{{ delivery.id }}/produits.pdf{% if referent %}?referent={{ referent }}{% endif %}">Télécharger la liste des commandes en PDF</a>
|
||||
{% endif %}
|
||||
{% if referent %}Voici la liste des product⋅eurs⋅rices dont {{ referent }} est référent⋅e. <a class="button" href="/distribution/{{delivery.id}}/producteurices">voir tous les produits</a>{% endif %}
|
||||
{% if referent %}Voici la liste des product⋅eurs⋅rices dont {{ referent }} est référent⋅e. <a class="button" href="/produits/{{delivery.id}}">voir tous les produits</a>{% endif %}
|
||||
</p>
|
||||
|
||||
<article class="delivery">
|
|
@ -20,7 +20,7 @@ async def home(request, response):
|
|||
response.redirect = "/groupes"
|
||||
return
|
||||
response.html(
|
||||
"delivery/list.html",
|
||||
"delivery/list_deliveries.html",
|
||||
incoming=Delivery.incoming(),
|
||||
former=Delivery.former(),
|
||||
archives=list(Delivery.all(is_archived=True)),
|
||||
|
@ -30,7 +30,7 @@ async def home(request, response):
|
|||
@app.route("/archives", methods=["GET"])
|
||||
async def view_archives(request, response):
|
||||
response.html(
|
||||
"delivery/archives.html", {"deliveries": Delivery.all(is_archived=True)}
|
||||
"delivery/list_archives.html", {"deliveries": Delivery.all(is_archived=True)}
|
||||
)
|
||||
|
||||
|
||||
|
@ -60,7 +60,7 @@ async def unarchive_delivery(request, response, id):
|
|||
|
||||
@app.route("/distribution", methods=["GET"])
|
||||
async def new_delivery(request, response):
|
||||
response.html("delivery/edit.html", delivery={})
|
||||
response.html("delivery/edit_delivery.html", delivery={})
|
||||
|
||||
|
||||
@app.route("/distribution", methods=["POST"])
|
||||
|
@ -83,7 +83,7 @@ async def create_delivery(request, response):
|
|||
async def pdf_for_producer(request, response, id, producer):
|
||||
delivery = Delivery.load(id)
|
||||
response.pdf(
|
||||
"product_list.html",
|
||||
"list_products.html",
|
||||
{"list_only": True, "delivery": delivery, "producers": [producer]},
|
||||
filename=utils.prefix(f"bon-de-commande-{producer}.pdf", delivery),
|
||||
)
|
||||
|
@ -93,7 +93,7 @@ async def pdf_for_producer(request, response, id, producer):
|
|||
async def delivery_toolbox(request, response, id):
|
||||
delivery = Delivery.load(id)
|
||||
response.html(
|
||||
"delivery/toolbox.html",
|
||||
"delivery/show_toolbox.html",
|
||||
{
|
||||
"delivery": delivery,
|
||||
"referents": [p.referent for p in delivery.producers.values()],
|
||||
|
@ -155,7 +155,7 @@ async def export_products(request, response, id):
|
|||
@staff_only
|
||||
async def edit_delivery(request, response, id):
|
||||
delivery = Delivery.load(id)
|
||||
response.html("delivery/edit.html", {"delivery": delivery})
|
||||
response.html("delivery/edit_delivery.html", {"delivery": delivery})
|
||||
|
||||
|
||||
@app.route("/distribution/{id}/edit", methods=["POST"])
|
||||
|
@ -176,7 +176,7 @@ async def post_delivery(request, response, id):
|
|||
@app.route("/distribution/{id}", methods=["GET"])
|
||||
async def view_delivery(request, response, id):
|
||||
delivery = Delivery.load(id)
|
||||
response.html("delivery/show.html", {"delivery": delivery})
|
||||
response.html("delivery/show_delivery.html", {"delivery": delivery})
|
||||
|
||||
|
||||
@app.route("/distribution/{id}/commander", methods=["POST", "GET"])
|
||||
|
@ -276,7 +276,7 @@ async def place_order(request, response, id):
|
|||
async def signing_sheet(request, response, id):
|
||||
delivery = Delivery.load(id)
|
||||
response.pdf(
|
||||
"delivery/signing_sheet.html",
|
||||
"delivery/show_signing_sheet.html",
|
||||
{"delivery": delivery},
|
||||
css="signing-sheet.css",
|
||||
filename=utils.prefix("commandes-par-groupe.pdf", delivery),
|
||||
|
@ -316,7 +316,9 @@ async def adjust_product(request, response, id, ref):
|
|||
response.message(f"Le produit «{product.ref}» a bien été ajusté!")
|
||||
response.redirect = delivery_url
|
||||
else:
|
||||
response.html("adjust_product.html", {"delivery": delivery, "product": product})
|
||||
response.html(
|
||||
"delivery/adjust_product.html", {"delivery": delivery, "product": product}
|
||||
)
|
||||
|
||||
|
||||
@app.route("/distribution/{id}/solde", methods=["GET"])
|
||||
|
@ -364,7 +366,7 @@ async def delivery_balance(request, response, id):
|
|||
for debiter, amount, crediter in results:
|
||||
results_dict[debiter][crediter] = amount
|
||||
|
||||
template_name = "delivery/balance.html"
|
||||
template_name = "delivery/compute_balance.html"
|
||||
template_args = {
|
||||
"delivery": delivery,
|
||||
"debiters": debiters,
|
||||
|
|
|
@ -10,7 +10,7 @@ async def on_startup():
|
|||
|
||||
@app.route("/groupes", methods=["GET"])
|
||||
async def handle_groups(request, response):
|
||||
response.html("groups/list.html", {"groups": request["groups"]})
|
||||
response.html("groups/list_groups.html", {"groups": request["groups"]})
|
||||
|
||||
|
||||
@app.route("/groupes/{id}/rejoindre", method=["GET"])
|
||||
|
@ -43,7 +43,7 @@ async def create_group(request, response):
|
|||
request["groups"].persist()
|
||||
response.message(f"Le groupe {group.name} à bien été créé")
|
||||
response.redirect = "/"
|
||||
response.html("groups/edit.html", group=group)
|
||||
response.html("groups/edit_group.html", group=group)
|
||||
|
||||
|
||||
@app.route("/groupes/{id}/éditer", methods=["GET", "POST"])
|
||||
|
@ -60,7 +60,7 @@ async def edit_group(request, response, id):
|
|||
request["groups"].groups[id] = group
|
||||
request["groups"].persist()
|
||||
response.redirect = "/groupes"
|
||||
response.html("groups/edit.html", group=group)
|
||||
response.html("groups/edit_group.html", group=group)
|
||||
|
||||
|
||||
@app.route("/groupes/{id}/supprimer", methods=["GET"])
|
||||
|
|
|
@ -18,7 +18,7 @@ async def auth_required(request, response):
|
|||
decoded = utils.read_token(token)
|
||||
email = decoded.get("sub")
|
||||
if not email:
|
||||
response.redirect = f"/sésame?next={request.path}"
|
||||
response.redirect = f"/connexion?next={request.path}"
|
||||
return response
|
||||
|
||||
groups = Groups.load()
|
||||
|
@ -33,12 +33,12 @@ async def auth_required(request, response):
|
|||
session.user.set(user)
|
||||
|
||||
|
||||
@app.route("/sésame", methods=["GET"], unprotected=True)
|
||||
@app.route("/connexion", methods=["GET"], unprotected=True)
|
||||
async def sesame(request, response):
|
||||
response.html("sesame.html")
|
||||
response.html("login.html")
|
||||
|
||||
|
||||
@app.route("/sésame", methods=["POST"], unprotected=True)
|
||||
@app.route("/connexion", methods=["POST"], unprotected=True)
|
||||
async def send_sesame(request, response):
|
||||
email = request.form.get("email").lower()
|
||||
token = utils.create_token(email)
|
||||
|
@ -61,7 +61,7 @@ async def send_sesame(request, response):
|
|||
response.redirect = "/"
|
||||
|
||||
|
||||
@app.route("/sésame/{token}", methods=["GET"], unprotected=True)
|
||||
@app.route("/connexion/{token}", methods=["GET"], unprotected=True)
|
||||
async def set_sesame(request, response, token):
|
||||
decoded = utils.read_token(token)
|
||||
if not decoded:
|
||||
|
|
|
@ -6,11 +6,11 @@ from ..models import Delivery, Product, Producer
|
|||
from .. import utils
|
||||
|
||||
|
||||
@app.route("/distribution/{id}/produits")
|
||||
@app.route("/distribution/{id}/produits.pdf")
|
||||
@app.route("/produits/{id}")
|
||||
@app.route("/produits/{id}/produits.pdf")
|
||||
async def list_products(request, response, id):
|
||||
delivery = Delivery.load(id)
|
||||
template_name = "products/list.html"
|
||||
template_name = "products/list_products.html"
|
||||
template_params = {
|
||||
"edit_mode": True,
|
||||
"list_only": True,
|
||||
|
@ -29,7 +29,7 @@ async def list_products(request, response, id):
|
|||
response.html(template_name, template_params)
|
||||
|
||||
|
||||
@app.route("/distribution/{delivery_id}/{producer_id}/éditer", methods=["GET", "POST"])
|
||||
@app.route("/produits/{delivery_id}/producteurs/{producer_id}", methods=["GET", "POST"])
|
||||
async def edit_producer(request, response, delivery_id, producer_id):
|
||||
delivery = Delivery.load(delivery_id)
|
||||
producer = delivery.producers.get(producer_id)
|
||||
|
@ -48,13 +48,14 @@ async def edit_producer(request, response, delivery_id, producer_id):
|
|||
{
|
||||
"delivery": delivery,
|
||||
"producer": producer,
|
||||
"products": delivery.get_products_by(producer.id),
|
||||
"products": delivery.get_products_by(producer_id),
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
@app.route(
|
||||
"/distribution/{delivery_id}/{producer_id}/supprimer", methods=["GET", "POST"]
|
||||
"/produits/{delivery_id}/producteurs/{producer_id}/supprimer",
|
||||
methods=["GET", "POST"],
|
||||
)
|
||||
async def delete_producer(request, response, delivery_id, producer_id):
|
||||
# Delete the producer and all the related products.
|
||||
|
@ -70,7 +71,7 @@ async def delete_producer(request, response, delivery_id, producer_id):
|
|||
delivery.persist()
|
||||
|
||||
response.message(f"{producer.name} à bien été supprimé !")
|
||||
response.redirect = f"/distribution/{delivery.id}/produits"
|
||||
response.redirect = f"/produits/{delivery.id}"
|
||||
|
||||
response.html(
|
||||
"products/delete_producer.html",
|
||||
|
@ -82,26 +83,7 @@ async def delete_producer(request, response, delivery_id, producer_id):
|
|||
)
|
||||
|
||||
|
||||
@app.route("/distribution/{delivery_id}/{producer_id}/frais", methods=["GET", "POST"])
|
||||
async def handle_shipping_fees(request, response, delivery_id, producer_id):
|
||||
delivery = Delivery.load(delivery_id)
|
||||
producer = delivery.producers.get(producer_id)
|
||||
if request.method == "POST":
|
||||
form = request.form
|
||||
producer.referent = form.get("referent")
|
||||
producer.referent_tel = form.get("referent_tel")
|
||||
producer.referent_name = form.get("referent_name")
|
||||
producer.description = form.get("description")
|
||||
producer.contact = form.get("contact")
|
||||
delivery.producers[producer_id] = producer
|
||||
delivery.persist()
|
||||
|
||||
response.html(
|
||||
"products/shipping_fees.html", {"delivery": delivery, "producer": producer}
|
||||
)
|
||||
|
||||
|
||||
@app.route("/producteurices/créer/{delivery_id}", methods=["GET", "POST"])
|
||||
@app.route("/produits/{delivery_id}/producteurs/créer", methods=["GET", "POST"])
|
||||
async def create_producer(request, response, delivery_id):
|
||||
delivery = Delivery.load(delivery_id)
|
||||
producer = None
|
||||
|
@ -120,7 +102,7 @@ async def create_producer(request, response, delivery_id):
|
|||
delivery.producers[producer_id] = producer
|
||||
delivery.persist()
|
||||
response.message(f"« {producer.name} » à bien été créé !")
|
||||
response.redirect = f"/distribution/{delivery.id}/{producer.id}/éditer"
|
||||
response.redirect = f"/produits/{delivery.id}/producteurs/{producer.id}"
|
||||
|
||||
response.html(
|
||||
"products/edit_producer.html", {"delivery": delivery, "producer": producer}
|
||||
|
@ -128,7 +110,7 @@ async def create_producer(request, response, delivery_id):
|
|||
|
||||
|
||||
@app.route(
|
||||
"/distribution/{delivery_id}/{producer_id}/produit/{product_ref}/éditer",
|
||||
"/produits/{delivery_id}/producteurs/{producer_id}/produits/{product_ref}",
|
||||
methods=["GET", "POST"],
|
||||
)
|
||||
async def edit_product(request, response, delivery_id, producer_id, product_ref):
|
||||
|
@ -153,16 +135,18 @@ async def edit_product(request, response, delivery_id, producer_id, product_ref)
|
|||
product.rupture = None
|
||||
delivery.persist()
|
||||
response.message("Le produit à bien été modifié")
|
||||
response.redirect = f"/distribution/{delivery_id}/{producer_id}/éditer"
|
||||
response.redirect = f"/produits/{delivery_id}/producteurs/{producer_id}"
|
||||
return
|
||||
|
||||
response.html(
|
||||
"products/edit.html",
|
||||
"products/edit_product.html",
|
||||
{"delivery": delivery, "product": product, "producer": producer},
|
||||
)
|
||||
|
||||
|
||||
@app.route("/distribution/{delivery_id}/{producer_id}/valider-prix", methods=["GET"])
|
||||
@app.route(
|
||||
"/produits/{delivery_id}/producteurs/{producer_id}/valider-prix", methods=["GET"]
|
||||
)
|
||||
async def mark_producer_prices_as_ok(request, response, delivery_id, producer_id):
|
||||
delivery = Delivery.load(delivery_id)
|
||||
producer = delivery.producers.get(producer_id)
|
||||
|
@ -175,10 +159,10 @@ async def mark_producer_prices_as_ok(request, response, delivery_id, producer_id
|
|||
response.message(
|
||||
f"Les prix ont été marqués comme OK pour « { producer.name } », merci !"
|
||||
)
|
||||
response.redirect = f"/distribution/{delivery_id}/{producer_id}/éditer"
|
||||
response.redirect = f"/produits/{delivery_id}/producteurs/{producer_id}"
|
||||
|
||||
|
||||
@app.route("/distribution/{delivery_id}/valider-prix", methods=["GET"])
|
||||
@app.route("/produits/{delivery_id}/valider-prix", methods=["GET"])
|
||||
async def mark_all_prices_as_ok(request, response, delivery_id):
|
||||
delivery = Delivery.load(delivery_id)
|
||||
|
||||
|
@ -187,22 +171,24 @@ async def mark_all_prices_as_ok(request, response, delivery_id):
|
|||
delivery.persist()
|
||||
|
||||
response.message(f"Les prix ont été marqués comme OK pour toute la distribution !")
|
||||
response.redirect = f"/distribution/{delivery_id}/produits"
|
||||
response.redirect = f"/produits/{delivery_id}"
|
||||
|
||||
|
||||
@app.route(
|
||||
"/distribution/{delivery_id}/{producer_id}/{product_ref}/supprimer", methods=["GET"]
|
||||
"/produits/{delivery_id}/producteurs/{producer_id}/produits/{product_ref}/supprimer",
|
||||
methods=["GET"],
|
||||
)
|
||||
async def delete_product(request, response, delivery_id, producer_id, product_ref):
|
||||
delivery = Delivery.load(delivery_id)
|
||||
product = delivery.delete_product(product_ref)
|
||||
delivery.persist()
|
||||
response.message(f"Le produit « { product.name } » à bien été supprimé.")
|
||||
response.redirect = f"/distribution/{delivery_id}/{producer_id}/éditer"
|
||||
response.redirect = f"/produits/{delivery_id}/producteurs/{producer_id}"
|
||||
|
||||
|
||||
@app.route(
|
||||
"/distribution/{delivery_id}/{producer_id}/ajouter-produit", methods=["GET", "POST"]
|
||||
"/produits/{delivery_id}/producteurs/{producer_id}/produits/créer",
|
||||
methods=["GET", "POST"],
|
||||
)
|
||||
async def create_product(request, response, delivery_id, producer_id):
|
||||
delivery = Delivery.load(delivery_id)
|
||||
|
@ -218,17 +204,17 @@ async def create_product(request, response, delivery_id, producer_id):
|
|||
delivery.products.append(product)
|
||||
delivery.persist()
|
||||
response.message("Le produit à bien été créé")
|
||||
response.redirect = f"/distribution/{delivery_id}/{producer_id}/éditer"
|
||||
response.redirect = f"/produits/{delivery_id}/producteurs/{producer_id}"
|
||||
return
|
||||
|
||||
response.html(
|
||||
"products/edit.html",
|
||||
"products/edit_product.html",
|
||||
{"delivery": delivery, "producer": producer, "product": product},
|
||||
)
|
||||
|
||||
|
||||
@app.route(
|
||||
"/distribution/{delivery_id}/{producer_id}/frais-de-livraison",
|
||||
"/produits/{delivery_id}/producteurs/{producer_id}/frais-de-livraison",
|
||||
methods=["GET", "POST"],
|
||||
)
|
||||
async def set_shipping_price(request, response, delivery_id, producer_id):
|
||||
|
@ -242,11 +228,11 @@ async def set_shipping_price(request, response, delivery_id, producer_id):
|
|||
delivery.shipping[producer_id] = shipping
|
||||
delivery.persist()
|
||||
response.message("Les frais de livraison ont bien été enregistrés, merci !")
|
||||
response.redirect = f"/distribution/{delivery_id}/produits"
|
||||
response.redirect = f"/produits/{delivery_id}"
|
||||
return
|
||||
|
||||
response.html(
|
||||
"products/shipping_fees.html",
|
||||
"products/edit_shipping_fees.html",
|
||||
{
|
||||
"delivery": delivery,
|
||||
"producer": producer,
|
||||
|
@ -255,17 +241,17 @@ async def set_shipping_price(request, response, delivery_id, producer_id):
|
|||
)
|
||||
|
||||
|
||||
@app.route("/distribution/{id}/copier", methods=["GET"])
|
||||
async def copy_products(request, response, id):
|
||||
@app.route("/produits/{id}/copier", methods=["GET"])
|
||||
async def copy_products_get(request, response, id):
|
||||
deliveries = Delivery.all()
|
||||
response.html("delivery/copy.html", {"deliveries": deliveries})
|
||||
response.html("products/copy_products.html", {"deliveries": deliveries})
|
||||
|
||||
|
||||
@app.route("/distribution/{id}/copier", methods=["POST"])
|
||||
async def copy_products(request, response, id):
|
||||
@app.route("/produits/{id}/copier", methods=["POST"])
|
||||
async def copy_products_post(request, response, id):
|
||||
delivery = Delivery.load(id)
|
||||
to_copy = delivery.load(request.form.get("to_copy"))
|
||||
delivery.producers = to_copy.producers
|
||||
delivery.products = to_copy.products
|
||||
delivery.persist()
|
||||
response.redirect = f"/distribution/{id}"
|
||||
response.redirect = f"/produits/{id}"
|
||||
|
|
Loading…
Reference in a new issue