feat: add paged NAS photo browser with metadata filters and previews
This commit is contained in:
@@ -1404,6 +1404,7 @@ def create_app(settings=None, start_worker=True):
|
||||
"app.js",
|
||||
"thumbnails.js",
|
||||
"libraries.js",
|
||||
"source-browser.js",
|
||||
"features.js",
|
||||
"extensions.js",
|
||||
"style.css",
|
||||
|
||||
@@ -8,6 +8,7 @@ from pigway_frame_flow.display.libraries import GenerationPlan
|
||||
from pigway_frame_flow.errors import ErrorCode as E
|
||||
from pigway_frame_flow.errors import FlowError
|
||||
from pigway_frame_flow.models import ImageExclusion, ImageStar, StrictModel
|
||||
from pigway_frame_flow.providers.source_browser import BrowseFilters
|
||||
|
||||
|
||||
class BindingInput(StrictModel):
|
||||
@@ -79,6 +80,30 @@ def install_libraries(app, service):
|
||||
)["n"],
|
||||
}
|
||||
|
||||
@app.get(
|
||||
"/api/v1/source-libraries/{source_id}/browse",
|
||||
dependencies=[Depends(require("images:read"))],
|
||||
)
|
||||
def browse(
|
||||
source_id: str,
|
||||
filters: BrowseFilters = Query(),
|
||||
):
|
||||
return service.photo_sources.browser.page(
|
||||
source_id, filters.offset, filters.limit, filters
|
||||
)
|
||||
|
||||
@app.get(
|
||||
"/api/v1/source-libraries/{source_id}/browse/{item_id}/preview",
|
||||
dependencies=[Depends(require("images:read"))],
|
||||
)
|
||||
def browse_preview(source_id: str, item_id: str):
|
||||
data = service.photo_sources.browser.preview(source_id, item_id)
|
||||
return Response(
|
||||
data,
|
||||
media_type="image/jpeg",
|
||||
headers={"Cache-Control": "private, no-store"},
|
||||
)
|
||||
|
||||
@app.post(
|
||||
"/api/v1/source-libraries/{source_id}/import",
|
||||
dependencies=[Depends(require("admin"))],
|
||||
|
||||
Reference in New Issue
Block a user