Upload files to "frontend/routes"

This commit is contained in:
Thierry 2026-04-01 21:34:58 +02:00
parent d1686cdc8e
commit e6824ac5b2
5 changed files with 306 additions and 0 deletions

59
frontend/routes/upload.py Normal file
View file

@ -0,0 +1,59 @@
# routes/upload.py
from fastapi import APIRouter, Request, UploadFile, File, HTTPException
from fastapi.responses import HTMLResponse, RedirectResponse
from pathlib import Path
import api_client
import config
router = APIRouter()
@router.get("/", response_class=RedirectResponse)
async def root():
"""Redirige / vers /upload"""
return RedirectResponse(url="/upload")
@router.get("/upload", response_class=HTMLResponse)
async def index(request: Request):
return request.app.state.templates.TemplateResponse(
"index.html",
{"request": request, "active_tab": "upload"},
)
@router.get("/health-check", response_class=HTMLResponse)
async def health_check(request: Request):
try:
data = await api_client.check_health()
return request.app.state.templates.TemplateResponse(
"partials/health_status.html",
{"request": request, "ok": True, "entwine_available": data.get("entwine_available", False), "disk_free_gb": data.get("disk_free_gb", "?")},
)
except Exception as e:
return request.app.state.templates.TemplateResponse(
"partials/health_status.html",
{"request": request, "ok": False, "error": str(e)},
)
@router.post("/upload", response_class=HTMLResponse)
async def upload(request: Request, file: UploadFile = File(...)):
suffix = Path(file.filename).suffix.lower()
if suffix not in config.SUPPORTED_EXTENSIONS:
return request.app.state.templates.TemplateResponse(
"partials/upload_result.html",
{"request": request, "error": f"Format non supporté : {suffix}. Formats acceptés : {', '.join(config.SUPPORTED_EXTENSIONS)}", "result": None},
)
try:
data = await api_client.upload_file(file.filename, await file.read())
return request.app.state.templates.TemplateResponse(
"partials/upload_result.html",
{"request": request, "result": data, "error": None},
)
except Exception as e:
return request.app.state.templates.TemplateResponse(
"partials/upload_result.html",
{"request": request, "error": str(e), "result": None},
)