bifroest/app/uploads/routes.py
2026-10-27 08:34:17 +01:00

29 lines
1.1 KiB
Python

"""Dateien hochladen und löschen (→ Konzept 7.7)."""
from fastapi import APIRouter, Request, UploadFile
from fastapi.concurrency import run_in_threadpool
from fastapi.responses import Response
from app import web
from app.uploads import service as uploads
def router() -> APIRouter:
r = APIRouter()
@r.post("/workspaces/{workspace_id}/uploads")
async def upload(request: Request, principal: web.Checked, workspace_id: int, file: UploadFile) -> Response:
def work() -> None:
with web.db(request).session() as session:
uploads.save(session, principal, web.settings(request), workspace_id, file.filename or "",
file.file)
await run_in_threadpool(work)
return web.redirect(f"/workspaces/{workspace_id}/data#uploads")
@r.post("/uploads/{upload_id}/delete")
def delete(request: Request, principal: web.Checked, upload_id: int) -> Response:
with web.db(request).session() as session:
workspace_id = uploads.delete(session, principal, web.settings(request), upload_id)
return web.redirect(f"/workspaces/{workspace_id}/data#uploads")
return r