Init project

This commit is contained in:
seb
2026-02-21 23:26:50 +01:00
parent df61e93871
commit b7046b125c
29 changed files with 2553 additions and 0 deletions

95
routers/clients.py Normal file
View File

@@ -0,0 +1,95 @@
from fastapi import APIRouter, Depends, Request, Form, HTTPException
from fastapi.responses import HTMLResponse, RedirectResponse
from fastapi.templating import Jinja2Templates
from sqlalchemy.orm import Session
from database import get_db
from models import Client
from auth import get_current_user
from template_helper import render
router = APIRouter(prefix="/clients", tags=["clients"],
dependencies=[Depends(get_current_user)])
templates = Jinja2Templates(directory="templates")
@router.get("/", response_class=HTMLResponse)
def liste_clients(request: Request, db: Session = Depends(get_db)):
clients = db.query(Client).filter(Client.actif == True).order_by(Client.nom).all()
return render(templates, "clients/liste.html", request, {
"clients": clients
})
@router.get("/nouveau", response_class=HTMLResponse)
def nouveau_client_form(request: Request):
return render(templates, "clients/form.html", request, {
"client": None, "titre": "Nouveau client"
})
@router.post("/nouveau")
def creer_client(
request: Request,
nom: str = Form(...),
adresse: str = Form(...),
code_postal: str = Form(...),
ville: str = Form(...),
email: str = Form(""),
telephone: str = Form(""),
siret: str = Form(""),
db: Session = Depends(get_db)
):
client = Client(
nom=nom, adresse=adresse, code_postal=code_postal,
ville=ville, email=email, telephone=telephone, siret=siret
)
db.add(client)
db.commit()
return RedirectResponse("/clients/", status_code=303)
@router.get("/{client_id}/modifier", response_class=HTMLResponse)
def modifier_client_form(request: Request, client_id: int, db: Session = Depends(get_db)):
client = db.query(Client).get(client_id)
if not client:
raise HTTPException(status_code=404)
return render(templates, "clients/form.html", request, {
"client": client, "titre": "Modifier le client"
})
@router.post("/{client_id}/modifier")
def modifier_client(
client_id: int,
nom: str = Form(...),
adresse: str = Form(...),
code_postal: str = Form(...),
ville: str = Form(...),
email: str = Form(""),
telephone: str = Form(""),
siret: str = Form(""),
db: Session = Depends(get_db)
):
client = db.query(Client).get(client_id)
if not client:
raise HTTPException(status_code=404)
client.nom = nom
client.adresse = adresse
client.code_postal = code_postal
client.ville = ville
client.email = email
client.telephone = telephone
client.siret = siret
db.commit()
return RedirectResponse("/clients/", status_code=303)
@router.post("/{client_id}/supprimer")
def supprimer_client(client_id: int, db: Session = Depends(get_db)):
client = db.query(Client).get(client_id)
if not client:
raise HTTPException(status_code=404)
client.actif = False
db.commit()
return RedirectResponse("/clients/", status_code=303)