58 lines
No EOL
1.8 KiB
Python
58 lines
No EOL
1.8 KiB
Python
from fastapi import APIRouter, Request
|
|
from fastapi.responses import HTMLResponse
|
|
import api_client
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
def _render(request: Request, template: str, **kwargs) -> HTMLResponse:
|
|
"""Render using JinjaX catalog for all .jinja templates"""
|
|
catalog = request.app.state.catalog
|
|
html_content = catalog.render(template, **kwargs)
|
|
return HTMLResponse(content=html_content)
|
|
|
|
|
|
@router.get("/admin/list", response_class=HTMLResponse)
|
|
async def admin_list(request: Request):
|
|
try:
|
|
pointclouds = await api_client.list_pointclouds()
|
|
return _render(
|
|
request, "partials/cloud_list",
|
|
pointclouds=pointclouds, error=None,
|
|
)
|
|
except Exception as e:
|
|
return _render(
|
|
request, "partials/cloud_list",
|
|
pointclouds=[], error=str(e),
|
|
)
|
|
|
|
|
|
@router.get("/admin/debug/{pc_id}", response_class=HTMLResponse)
|
|
async def admin_debug(request: Request, pc_id: str):
|
|
try:
|
|
data = await api_client.get_debug(pc_id)
|
|
return _render(
|
|
request, "partials/debug_panel",
|
|
pc_id=pc_id, data=data, error=None,
|
|
)
|
|
except Exception as e:
|
|
return _render(
|
|
request, "partials/debug_panel",
|
|
pc_id=pc_id, data=None, error=str(e),
|
|
)
|
|
|
|
|
|
@router.delete("/admin/delete/{pc_id}", response_class=HTMLResponse)
|
|
async def admin_delete(request: Request, pc_id: str):
|
|
try:
|
|
await api_client.delete_pointcloud(pc_id)
|
|
pointclouds = await api_client.list_pointclouds()
|
|
return _render(
|
|
request, "partials/cloud_list",
|
|
pointclouds=pointclouds, error=None,
|
|
)
|
|
except Exception as e:
|
|
return _render(
|
|
request, "partials/cloud_list",
|
|
pointclouds=[], error=str(e),
|
|
) |