feat(07-01): wire dashboard data and add /packages listing page

- Dashboard queries 5 most recent Printer records and 5 most recent driver-assigned ones
- New /packages route lists printers with drivers, with intunewin/ninja download links
- packages.html template extends base.html with Pico grid table
- Dashboard printer/package items now link to detail pages
- Quick action buttons wired to real routes (removed aria-disabled)
This commit is contained in:
2026-04-13 08:58:13 +02:00
parent 8cf47f5c89
commit 91910ad97d
3 changed files with 74 additions and 7 deletions
+32 -2
View File
@@ -15,12 +15,23 @@ templates = Jinja2Templates(directory=str(Path(__file__).parent.parent / "templa
@router.get("/", response_class=HTMLResponse)
def dashboard(request: Request):
from imptune.db.models import Printer
recent_printers = list(
Printer.select().order_by(Printer.created_at.desc()).limit(5)
)
recent_packages = list(
Printer.select()
.where(Printer.driver.is_null(False))
.order_by(Printer.created_at.desc())
.limit(5)
)
return templates.TemplateResponse(
request=request,
name="dashboard.html",
context={
"recent_printers": [],
"recent_packages": [],
"recent_printers": recent_printers,
"recent_packages": recent_packages,
},
)
@@ -126,3 +137,22 @@ def clients_page(request: Request):
name="clients.html",
context={"clients": clients},
)
@router.get("/packages", response_class=HTMLResponse)
def packages_page(request: Request):
from imptune.db.models import Client, Driver, Printer
printers = list(
Printer.select(Printer, Client, Driver)
.join(Client, JOIN.LEFT_OUTER)
.switch(Printer)
.join(Driver, JOIN.LEFT_OUTER)
.where(Printer.driver.is_null(False))
.order_by(Printer.name)
)
return templates.TemplateResponse(
request=request,
name="packages.html",
context={"printers": printers},
)