App FastAPI + SQLite + SQLModel + Jinja2 pour gérer le stock de matériel IT (catégories/sous-catégories/matériels), avec recherche par scan de code-barres et alertes email de stock bas.
42 lines
1.5 KiB
Python
42 lines
1.5 KiB
Python
"""Routes pour gérer la liste des emails qui reçoivent les alertes de stock bas."""
|
|
|
|
from fastapi import APIRouter, Depends, Form
|
|
from fastapi.requests import Request
|
|
from fastapi.responses import RedirectResponse
|
|
from sqlmodel import Session, select
|
|
|
|
from app.database import get_session
|
|
from app.models import DestinataireAlerte
|
|
from app.templates_engine import templates
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
@router.get("/destinataires")
|
|
def lister_destinataires(request: Request, session: Session = Depends(get_session)):
|
|
"""Affiche la liste des emails configurés pour recevoir les alertes."""
|
|
destinataires = session.exec(select(DestinataireAlerte)).all()
|
|
return templates.TemplateResponse(
|
|
request, "destinataires.html", {"destinataires": destinataires}
|
|
)
|
|
|
|
|
|
@router.post("/destinataires")
|
|
def ajouter_destinataire(email: str = Form(...), session: Session = Depends(get_session)):
|
|
"""Ajoute un email à la liste des destinataires des alertes."""
|
|
session.add(DestinataireAlerte(email=email))
|
|
session.commit()
|
|
return RedirectResponse(url="/destinataires", status_code=303)
|
|
|
|
|
|
@router.post("/destinataires/{destinataire_id}/supprimer")
|
|
def supprimer_destinataire(
|
|
destinataire_id: int, session: Session = Depends(get_session)
|
|
):
|
|
"""Retire un email de la liste des destinataires."""
|
|
destinataire = session.get(DestinataireAlerte, destinataire_id)
|
|
if destinataire:
|
|
session.delete(destinataire)
|
|
session.commit()
|
|
return RedirectResponse(url="/destinataires", status_code=303)
|