From 3df8aedbd45ecb6ace5a596b9fe12c23efbb40bb Mon Sep 17 00:00:00 2001 From: tenzi Date: Mon, 23 Feb 2026 12:19:22 +0100 Subject: [PATCH] list employees done --- app.py | 66 +++++++++++++++++++----------------- models.py | 6 ++-- templates/employee_form.html | 31 ++++++++++------- templates/employees.html | 41 +++++++++++++++++----- 4 files changed, 88 insertions(+), 56 deletions(-) diff --git a/app.py b/app.py index 13813f6..3a8561b 100644 --- a/app.py +++ b/app.py @@ -1,4 +1,4 @@ -from fastapi import FastAPI, Request, HTTPException, Form +from fastapi import FastAPI, Request, HTTPException, Form, responses from fastapi.responses import RedirectResponse, HTMLResponse from fastapi.staticfiles import StaticFiles from fastapi.templating import Jinja2Templates @@ -9,8 +9,7 @@ from pydantic import BaseModel from sqlmodel import SQLModel, Relationship, Session, create_engine, select import json -from models import ordinateur, employee, employee_ordinateur -from forms import EmployeeForm +from models import ordinateur, employee app = FastAPI() #ordi1 = ordinateur() @@ -38,45 +37,48 @@ async def get_ordi1_info(request: Request, ordi_id: int): request=request, name="item.html", context={"ordi": this_ordi} ) +@app.get("/employee/create", response_class=HTMLResponse) +async def get_employee_form(request: Request): + return templates.TemplateResponse( + "employee_form.html", {"request" : request}) + +@app.post("/employee/add", response_class=HTMLResponse) +async def submit_employee_form( + first_name: str = Form(...), + family_name: str = Form(...), + badge_number: str = Form(...) + ): + with Session(engine) as session: + new_employee = employee( + first_name=first_name, + family_name=family_name, + badge_number=badge_number + ) + session.add(new_employee) + session.commit() + + return responses.RedirectResponse( + url="/employees", status_code=303) + @app.get("/employees", response_class=HTMLResponse) async def get_employees(request: Request): with Session(engine) as session: statement= select(employee) employees= session.exec(statement).all() return templates.TemplateResponse( - request=request, name="employees.html", context={"employees": employees} + "employees.html", {"request" : request, "employees" : employees} ) - -@app.get("/employee/create", response_class=HTMLResponse) -async def get_employee_form(request: Request): - return templates.TemplateResponse( - request=request, name="employee_form.html", success= True ) - -@app.post("/employee/create", response_class=HTMLResponse) -async def submit_employee_form(data: Annotated[EmployeeForm, Form()]): - print(f"data obtained is {data}") - with Session(engine) as session: - employee = Employee( - first_name=data.fname, - family_name=data.lname, - badge_number=data.badge - ) - session.add(employee) - session.commit() - session.refresh(employee) - return templates.TemplateResponse( - request=request, name="employees.html", context={"employees": employees}) -'''@app.post("/employee/delete", response=RedirectResponse) -async def delete_employee(request: Request): +@app.post("/employee/{e_id}/delete") +async def delete_employee(e_id: int): with Session(engine) as session: - statement = select(ordinateur) - results = session.exec(statement) - ordi1 = results.one() - - session.delete(ordi1) - session.commit()''' + db_e = session.get(employee, e_id) + if not db_e: + raise HTTPException(status_code=404, detail="Employé non trouvé") + session.delete(db_e) + session.commit() + return responses.RedirectResponse(url="/employees", status_code=303) @app.post("/endpoint") async def receive_info(request: Request): diff --git a/models.py b/models.py index fd462f1..da47cf6 100644 --- a/models.py +++ b/models.py @@ -9,9 +9,9 @@ class employee_ordinateur(SQLModel, table=True): class employee(SQLModel, table=True): id: int | None = Field(default=None, primary_key=True) - first_name: str = Field(index=True) - family_name: str = Field(index=True) - badge_number: str = Field(index=True) + first_name: str + family_name: str + badge_number: str ordinateurs: list["ordinateur"] = Relationship(back_populates="employees", link_model=employee_ordinateur) diff --git a/templates/employee_form.html b/templates/employee_form.html index da71be5..9e9b8f4 100644 --- a/templates/employee_form.html +++ b/templates/employee_form.html @@ -1,20 +1,27 @@ + + + + + +
-

Employee form

+
Employee form
-
-
-
-
-
-
-
-
- -
+
+
+
+
+
+
+

+ + +
+
- + \ No newline at end of file diff --git a/templates/employees.html b/templates/employees.html index 87f9904..b8e3c13 100644 --- a/templates/employees.html +++ b/templates/employees.html @@ -1,19 +1,42 @@ + + Employees - - - - + +
+ +
Employee list
+ + + + + + + + + + + + {% for e in employees %} + + + + + + + + {% endfor %} + + +
{{ e.id }}{{ e.first_name }}{{ e.family_name }}{{ e.badge_number }}
+
+ + \ No newline at end of file