| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- """
- 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}
- )
|