""" Web UI routes for serving HTML templates. """ from fastapi import APIRouter, Request from fastapi.responses import HTMLResponse from fastapi.templating import Jinja2Templates from pathlib import Path router = APIRouter(tags=["web"]) # Setup templates directory WEB_ROOT = Path(__file__).resolve().parent.parent templates = Jinja2Templates(directory=str(WEB_ROOT / "templates")) @router.get("/", response_class=HTMLResponse) async def index(request: Request, token: str = None): """ Render the main index page showing all builds. Args: request: FastAPI Request object token: Optional build token to automatically show log modal Returns: Rendered HTML template """ return templates.TemplateResponse( "index.html", {"request": request, "token": token} ) @router.get("/viewlog/{token}", response_class=HTMLResponse) async def viewlog(request: Request, token: str): """ Render the index page with a specific build log open. Args: request: FastAPI Request object token: Build ID to show log for Returns: Rendered HTML template with token """ return templates.TemplateResponse( "index.html", {"request": request, "token": token} ) @router.get("/add_build", response_class=HTMLResponse) async def add_build(request: Request): """ Render the add build page for creating new firmware builds. Args: request: FastAPI Request object Returns: Rendered HTML template """ return templates.TemplateResponse( "add_build.html", {"request": request} )