2026-07-14 16:38:59 +00:00
|
|
|
{% extends "base.html" %}
|
|
|
|
|
{% block titre %}Alertes - Gestion de stock IT{% endblock %}
|
|
|
|
|
{% block contenu %}
|
|
|
|
|
<h1>Destinataires des alertes de stock bas</h1>
|
|
|
|
|
|
2026-07-14 17:06:37 +00:00
|
|
|
<form method="get" action="/destinataires" class="barre-recherche">
|
|
|
|
|
<input type="search" name="q" value="{{ q }}" placeholder="Rechercher un email…">
|
|
|
|
|
{% if q %}<a href="/destinataires" class="lien-effacer">Effacer</a>{% endif %}
|
|
|
|
|
</form>
|
|
|
|
|
|
|
|
|
|
<ul class="liste-resultats">
|
2026-07-14 16:38:59 +00:00
|
|
|
{% for destinataire in destinataires %}
|
|
|
|
|
<li>
|
2026-07-14 17:06:37 +00:00
|
|
|
<span>{{ destinataire.email }}</span>
|
2026-07-14 16:38:59 +00:00
|
|
|
<form method="post" action="/destinataires/{{ destinataire.id }}/supprimer" class="formulaire-inline">
|
|
|
|
|
<button type="submit" class="bouton-danger">Supprimer</button>
|
|
|
|
|
</form>
|
|
|
|
|
</li>
|
|
|
|
|
{% else %}
|
2026-07-14 17:06:37 +00:00
|
|
|
<li class="liste-vide">
|
|
|
|
|
{% if q %}Aucun destinataire ne correspond à « {{ q }} ».{% else %}Aucun destinataire configuré : aucune alerte ne sera envoyée.{% endif %}
|
|
|
|
|
</li>
|
2026-07-14 16:38:59 +00:00
|
|
|
{% endfor %}
|
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
|
|
<form method="post" action="/destinataires" class="formulaire-inline">
|
|
|
|
|
<input type="email" name="email" placeholder="email@clinique.local" required>
|
2026-07-19 06:47:50 +00:00
|
|
|
<button type="submit" class="bouton-primaire">Ajouter</button>
|
2026-07-14 16:38:59 +00:00
|
|
|
</form>
|
2026-07-14 17:37:36 +00:00
|
|
|
|
|
|
|
|
<h2>Résumé périodique du stock</h2>
|
2026-07-19 06:47:50 +00:00
|
|
|
|
|
|
|
|
{#
|
|
|
|
|
Les deux formulaires ci-dessous modifient le même réglage
|
|
|
|
|
(expression_cron) : l'un via des raccourcis courants, l'autre en saisie
|
|
|
|
|
libre. Les regrouper dans une même carte les fait lire comme un seul
|
|
|
|
|
réglage à deux modes de saisie plutôt que deux actions indépendantes.
|
|
|
|
|
#}
|
|
|
|
|
<div class="carte-reglage">
|
|
|
|
|
<p class="texte-secondaire">
|
|
|
|
|
Un email récapitulatif (stock bas en premier, puis le reste du stock) est
|
|
|
|
|
envoyé automatiquement selon l'horaire ci-dessous, aux destinataires listés
|
|
|
|
|
plus haut.
|
|
|
|
|
{% if prochaine_execution %}
|
|
|
|
|
Prochain envoi : {{ prochaine_execution.strftime("%d/%m/%Y à %H:%M") }}.
|
|
|
|
|
{% endif %}
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
{% if erreur_cron %}
|
|
|
|
|
<p class="message-erreur">{{ erreur_cron }}</p>
|
2026-07-14 17:37:36 +00:00
|
|
|
{% endif %}
|
|
|
|
|
|
2026-07-19 06:47:50 +00:00
|
|
|
{% set exemples_valeurs = exemples_cron | map(attribute=0) | list %}
|
|
|
|
|
<form method="post" action="/destinataires/planification" class="formulaire-inline formulaire-planification">
|
|
|
|
|
<select name="expression_cron">
|
|
|
|
|
{% for expression, description in exemples_cron %}
|
|
|
|
|
<option value="{{ expression }}" {{ "selected" if expression == expression_cron else "" }}>
|
|
|
|
|
{{ description }} ({{ expression }})
|
|
|
|
|
</option>
|
|
|
|
|
{% endfor %}
|
|
|
|
|
{% if expression_cron not in exemples_valeurs %}
|
|
|
|
|
<option value="{{ expression_cron }}" selected>Personnalisé ({{ expression_cron }})</option>
|
|
|
|
|
{% endif %}
|
|
|
|
|
</select>
|
|
|
|
|
<button type="submit">Appliquer</button>
|
|
|
|
|
</form>
|
2026-07-14 17:37:36 +00:00
|
|
|
|
2026-07-19 06:47:50 +00:00
|
|
|
<form method="post" action="/destinataires/planification" class="formulaire-inline">
|
|
|
|
|
<input type="text" name="expression_cron" value="{{ expression_cron }}" class="champ-cron" placeholder="0 9 * * mon">
|
|
|
|
|
<button type="submit">Enregistrer une expression personnalisée</button>
|
|
|
|
|
</form>
|
2026-07-14 17:37:36 +00:00
|
|
|
|
2026-07-19 06:47:50 +00:00
|
|
|
<p class="texte-secondaire">
|
|
|
|
|
Format cron : minute (0-59) heure (0-23) jour (1-31) mois (1-12) jour de la
|
|
|
|
|
semaine. Utilisez les noms de jours (mon, tue, wed, thu, fri, sat, sun),
|
|
|
|
|
pas de chiffres — leur numérotation ne suit pas le cron Unix habituel et
|
|
|
|
|
prête à confusion.
|
|
|
|
|
</p>
|
|
|
|
|
</div>
|
2026-07-14 16:38:59 +00:00
|
|
|
{% endblock %}
|