feat: add remote URL attachment support and project editing endpoint

This commit is contained in:
2026-06-10 22:17:25 +00:00
parent 9b425b33a5
commit 3540bc8fa6
43 changed files with 1520 additions and 133 deletions
+19 -1
View File
@@ -1,13 +1,17 @@
import logging
from pathlib import Path
from fastapi import APIRouter, Request
from typing import Annotated
from fastapi import APIRouter, Form, Request
from fastapi.responses import JSONResponse
from devplacepy.database import get_table, get_int_setting
from devplacepy.models import UploadUrlForm
from devplacepy.utils import require_user_api
from devplacepy.attachments import (
store_attachment,
store_attachment_from_url,
delete_attachment as _delete_attachment,
is_extension_allowed,
RemoteFetchError,
)
logger = logging.getLogger(__name__)
@@ -48,6 +52,20 @@ async def upload_file(request: Request):
return JSONResponse(result, status_code=201)
@router.post("/upload-url")
async def upload_from_url(request: Request, data: Annotated[UploadUrlForm, Form()]):
user = require_user_api(request)
try:
result = await store_attachment_from_url(data.url, user["uid"], data.filename)
except RemoteFetchError as exc:
return JSONResponse({"error": exc.message}, status_code=exc.status)
logger.info(
f"URL attached: {data.url} ({result['file_size']} bytes) -> {result['url']}"
)
return JSONResponse(result, status_code=201)
@router.delete("/delete/{attachment_uid}")
async def delete_attachment_route(request: Request, attachment_uid: str):
user = require_user_api(request)