list employees done
This commit is contained in:
parent
a8262fa689
commit
3df8aedbd4
66
app.py
66
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.responses import RedirectResponse, HTMLResponse
|
||||||
from fastapi.staticfiles import StaticFiles
|
from fastapi.staticfiles import StaticFiles
|
||||||
from fastapi.templating import Jinja2Templates
|
from fastapi.templating import Jinja2Templates
|
||||||
@ -9,8 +9,7 @@ from pydantic import BaseModel
|
|||||||
from sqlmodel import SQLModel, Relationship, Session, create_engine, select
|
from sqlmodel import SQLModel, Relationship, Session, create_engine, select
|
||||||
|
|
||||||
import json
|
import json
|
||||||
from models import ordinateur, employee, employee_ordinateur
|
from models import ordinateur, employee
|
||||||
from forms import EmployeeForm
|
|
||||||
|
|
||||||
app = FastAPI()
|
app = FastAPI()
|
||||||
#ordi1 = ordinateur()
|
#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}
|
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)
|
@app.get("/employees", response_class=HTMLResponse)
|
||||||
async def get_employees(request: Request):
|
async def get_employees(request: Request):
|
||||||
with Session(engine) as session:
|
with Session(engine) as session:
|
||||||
statement= select(employee)
|
statement= select(employee)
|
||||||
employees= session.exec(statement).all()
|
employees= session.exec(statement).all()
|
||||||
return templates.TemplateResponse(
|
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)
|
@app.post("/employee/{e_id}/delete")
|
||||||
async def delete_employee(request: Request):
|
async def delete_employee(e_id: int):
|
||||||
with Session(engine) as session:
|
with Session(engine) as session:
|
||||||
statement = select(ordinateur)
|
db_e = session.get(employee, e_id)
|
||||||
results = session.exec(statement)
|
if not db_e:
|
||||||
ordi1 = results.one()
|
raise HTTPException(status_code=404, detail="Employé non trouvé")
|
||||||
|
session.delete(db_e)
|
||||||
session.delete(ordi1)
|
session.commit()
|
||||||
session.commit()'''
|
return responses.RedirectResponse(url="/employees", status_code=303)
|
||||||
|
|
||||||
@app.post("/endpoint")
|
@app.post("/endpoint")
|
||||||
async def receive_info(request: Request):
|
async def receive_info(request: Request):
|
||||||
|
|||||||
@ -9,9 +9,9 @@ class employee_ordinateur(SQLModel, table=True):
|
|||||||
|
|
||||||
class employee(SQLModel, table=True):
|
class employee(SQLModel, table=True):
|
||||||
id: int | None = Field(default=None, primary_key=True)
|
id: int | None = Field(default=None, primary_key=True)
|
||||||
first_name: str = Field(index=True)
|
first_name: str
|
||||||
family_name: str = Field(index=True)
|
family_name: str
|
||||||
badge_number: str = Field(index=True)
|
badge_number: str
|
||||||
|
|
||||||
ordinateurs: list["ordinateur"] = Relationship(back_populates="employees", link_model=employee_ordinateur)
|
ordinateurs: list["ordinateur"] = Relationship(back_populates="employees", link_model=employee_ordinateur)
|
||||||
|
|
||||||
|
|||||||
@ -1,20 +1,27 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@1.0.4/css/bulma.min.css">
|
||||||
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
|
||||||
<h2>Employee form</h2>
|
<div class="title pt-6">Employee form</div>
|
||||||
|
|
||||||
<form action="/employee/create" method="post" target="_blank">
|
<form action="/employee/add" method="post">
|
||||||
<label for="fname">First name:</label><br>
|
<label> First name:</label><br>
|
||||||
<input type="text" id="fname" name="fname" value=""><br>
|
<input class="input" type="text" name="first_name"><br>
|
||||||
<label for="lname">Family name:</label><br>
|
<label> Family name:</label><br>
|
||||||
<input type="text" id="lname" name="lname" value=""><br>
|
<input class ="input"type="text" name="family_name"><br>
|
||||||
<label for="badge">Badge number:</label><br>
|
<label> Badge number:</label><br>
|
||||||
<input type="text" id="badge" name="badge" value=""><br>
|
<input class ="input"type="text" name="badge_number"><br> <br>
|
||||||
<label for="ordis">Ordinateurs</label><br>
|
|
||||||
<input type="submit" value="Submit">
|
<input type="submit" value="Submit">
|
||||||
</form>
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
|
||||||
|
|
||||||
|
</html>
|
||||||
@ -1,19 +1,42 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@1.0.4/css/bulma.min.css">
|
||||||
<title>Employees</title>
|
<title>Employees</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
|
||||||
<ul>{% for e in employees %}
|
|
||||||
<li>{{ e.first_name}} {{ e.last_name }} {{ e.badge_number }}</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
<ul>
|
|
||||||
<li>uhdziuuadza</li>
|
|
||||||
|
|
||||||
</ul>
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
|
||||||
|
<div class="title pt-6">Employee list</div>
|
||||||
|
|
||||||
|
<table class="table is-striped is-bordered is-fullwidth">
|
||||||
|
|
||||||
|
<tr class="is-link">
|
||||||
|
<th>Id</th>
|
||||||
|
<th>First name</th>
|
||||||
|
<th>Family name</th>
|
||||||
|
<th>Badge number</th>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
{% for e in employees %}
|
||||||
|
<tr>
|
||||||
|
<td>{{ e.id }}</td>
|
||||||
|
<td>{{ e.first_name }}</td>
|
||||||
|
<td>{{ e.family_name }}</td>
|
||||||
|
<td>{{ e.badge_number }}</td>
|
||||||
|
|
||||||
|
|
||||||
|
{% endfor %}
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
Loading…
x
Reference in New Issue
Block a user