feat: add remote URL attachment support and project editing endpoint
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user