Ajoute un bouton de test de la notification ntfy depuis les réglages
Permet de vérifier en un clic que le serveur et le topic ntfy
renseignés fonctionnent, avant d'attendre un vrai rappel. Le bouton
envoie une notification de test via la même chaîne que les rappels
réels (donc tracée dans /logs), et affiche le résultat inline.
La fonction send_ntfy retourne désormais un booléen de succès pour
permettre ce retour utilisateur.
💘 Generated with Crush
Assisted-by: Crush:glm-5.2
This commit is contained in:
35
app/main.py
35
app/main.py
@ -24,7 +24,7 @@ from models import (
|
||||
from calcul import compute_week, minutes_to_hhmm, hhmm_to_minutes, heures_dues
|
||||
from stats import compute_all_stats
|
||||
from export import export_semaine_ods, export_annee_ods
|
||||
from notifications import reminder_loop
|
||||
from notifications import reminder_loop, send_ntfy
|
||||
|
||||
logging.basicConfig(
|
||||
level=getattr(logging, load_config().get("log_level", "DEBUG").upper(), logging.DEBUG),
|
||||
@ -594,6 +594,39 @@ def settings_save(
|
||||
return RedirectResponse("/settings?saved=1", status_code=303)
|
||||
|
||||
|
||||
@app.post("/settings/test-ntfy", response_class=HTMLResponse)
|
||||
def settings_test_ntfy(request: Request):
|
||||
user_id = _get_user(request)
|
||||
if not user_id:
|
||||
return RedirectResponse("/login", status_code=302)
|
||||
|
||||
notif = load_notif_config(user_id)
|
||||
topic = notif.get("ntfy_topic")
|
||||
server = notif.get("ntfy_server", "https://ntfy.sh")
|
||||
|
||||
if not topic:
|
||||
logger.warning("test ntfy: pas de topic configuré pour %r", user_id)
|
||||
return HTMLResponse(
|
||||
'<div id="ntfy-test-result" class="settings-error">'
|
||||
'Renseigne et enregistre un topic ntfy avant de tester.'
|
||||
'</div>'
|
||||
)
|
||||
|
||||
logger.info("test ntfy: envoi de test pour %r sur %r/%r", user_id, server, topic)
|
||||
ok = send_ntfy(
|
||||
server, topic,
|
||||
"Ceci est une notification de test — ta configuration ntfy fonctionne.",
|
||||
"Test pointeuse", user_id=user_id,
|
||||
)
|
||||
cls = "settings-saved" if ok else "settings-error"
|
||||
msg = ("Notification envoyée. Vérifie ton téléphone, elle doit arriver en quelques secondes."
|
||||
if ok else
|
||||
"Échec de l'envoi. Vérifie le serveur et le topic, et l'optimisation batterie de l'app ntfy.")
|
||||
return HTMLResponse(
|
||||
f'<div id="ntfy-test-result" class="{cls}">{msg}</div>'
|
||||
)
|
||||
|
||||
|
||||
@app.post("/settings/plages", response_class=HTMLResponse)
|
||||
def settings_plages_save(
|
||||
request: Request,
|
||||
|
||||
Reference in New Issue
Block a user