router.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. """
  2. Web UI routes for serving HTML templates.
  3. """
  4. from fastapi import APIRouter, Request
  5. from fastapi.responses import HTMLResponse
  6. from fastapi.templating import Jinja2Templates
  7. from pathlib import Path
  8. router = APIRouter(tags=["web"])
  9. # Setup templates directory
  10. WEB_ROOT = Path(__file__).resolve().parent.parent
  11. templates = Jinja2Templates(directory=str(WEB_ROOT / "templates"))
  12. @router.get("/", response_class=HTMLResponse)
  13. async def index(request: Request):
  14. """
  15. Render the main index page showing all builds.
  16. Args:
  17. request: FastAPI Request object
  18. Returns:
  19. Rendered HTML template
  20. """
  21. return templates.TemplateResponse(
  22. "index.html",
  23. {"request": request}
  24. )
  25. @router.get("/add_build", response_class=HTMLResponse)
  26. async def add_build(request: Request):
  27. """
  28. Render the add build page for creating new firmware builds.
  29. Args:
  30. request: FastAPI Request object
  31. Returns:
  32. Rendered HTML template
  33. """
  34. return templates.TemplateResponse(
  35. "add_build.html",
  36. {"request": request}
  37. )