fix install diogram
This commit is contained in:
33
web/main.py
33
web/main.py
@@ -1,6 +1,30 @@
|
||||
import os
|
||||
import flet as ft
|
||||
import httpx
|
||||
import designer as ds
|
||||
from router import setup_router
|
||||
from starlette.applications import Starlette
|
||||
from starlette.routing import Route, Mount
|
||||
from starlette.responses import Response as StarletteResponse
|
||||
|
||||
_API_URL = os.getenv("API_URL", "http://api:8000")
|
||||
|
||||
|
||||
async def _radar_image(request):
|
||||
"""Проксирует SVG-диаграмму с API — браузер скачивает с собственного хоста."""
|
||||
response_id = request.path_params["response_id"]
|
||||
try:
|
||||
async with httpx.AsyncClient(timeout=10) as client:
|
||||
r = await client.get(f"{_API_URL}/responses/{response_id}/radar/image")
|
||||
if r.status_code == 200:
|
||||
return StarletteResponse(
|
||||
content=r.content,
|
||||
media_type="image/svg+xml",
|
||||
headers={"Content-Disposition": 'attachment; filename="diagram.svg"'},
|
||||
)
|
||||
except Exception:
|
||||
pass
|
||||
return StarletteResponse(status_code=404)
|
||||
|
||||
|
||||
async def main(page: ft.Page):
|
||||
@@ -11,4 +35,11 @@ async def main(page: ft.Page):
|
||||
await page.push_route(initial)
|
||||
|
||||
|
||||
app = ft.run(main, export_asgi_app=True, assets_dir="assets")
|
||||
_flet_app = ft.run(main, export_asgi_app=True, assets_dir="assets")
|
||||
|
||||
app = Starlette(
|
||||
routes=[
|
||||
Route("/radar-image/{response_id}", _radar_image),
|
||||
Mount("/", _flet_app),
|
||||
]
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user