mirror of
https://github.com/willmiao/ComfyUI-Lora-Manager.git
synced 2026-03-21 21:22:11 -03:00
Add new POST endpoint `/api/lm/example-images/set-nsfw-level` to allow updating NSFW classification for individual example images. The endpoint supports both regular and custom images, validates required parameters, and updates the corresponding model metadata. This enables users to manually adjust NSFW ratings for better content filtering.
65 lines
2.6 KiB
Python
65 lines
2.6 KiB
Python
"""Route registrar for example image endpoints."""
|
|
from __future__ import annotations
|
|
|
|
from dataclasses import dataclass
|
|
from typing import Callable, Iterable, Mapping
|
|
|
|
from aiohttp import web
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class RouteDefinition:
|
|
"""Declarative configuration for a HTTP route."""
|
|
|
|
method: str
|
|
path: str
|
|
handler_name: str
|
|
|
|
|
|
ROUTE_DEFINITIONS: tuple[RouteDefinition, ...] = (
|
|
RouteDefinition("POST", "/api/lm/download-example-images", "download_example_images"),
|
|
RouteDefinition("POST", "/api/lm/import-example-images", "import_example_images"),
|
|
RouteDefinition("GET", "/api/lm/example-images-status", "get_example_images_status"),
|
|
RouteDefinition("POST", "/api/lm/pause-example-images", "pause_example_images"),
|
|
RouteDefinition("POST", "/api/lm/resume-example-images", "resume_example_images"),
|
|
RouteDefinition("POST", "/api/lm/stop-example-images", "stop_example_images"),
|
|
RouteDefinition("POST", "/api/lm/open-example-images-folder", "open_example_images_folder"),
|
|
RouteDefinition("GET", "/api/lm/example-image-files", "get_example_image_files"),
|
|
RouteDefinition("GET", "/api/lm/has-example-images", "has_example_images"),
|
|
RouteDefinition("POST", "/api/lm/delete-example-image", "delete_example_image"),
|
|
RouteDefinition("POST", "/api/lm/force-download-example-images", "force_download_example_images"),
|
|
RouteDefinition("POST", "/api/lm/cleanup-example-image-folders", "cleanup_example_image_folders"),
|
|
RouteDefinition("POST", "/api/lm/example-images/set-nsfw-level", "set_example_image_nsfw_level"),
|
|
)
|
|
|
|
|
|
class ExampleImagesRouteRegistrar:
|
|
"""Bind declarative example image routes to an aiohttp router."""
|
|
|
|
_METHOD_MAP = {
|
|
"GET": "add_get",
|
|
"POST": "add_post",
|
|
"PUT": "add_put",
|
|
"DELETE": "add_delete",
|
|
}
|
|
|
|
def __init__(self, app: web.Application) -> None:
|
|
self._app = app
|
|
|
|
def register_routes(
|
|
self,
|
|
handler_lookup: Mapping[str, Callable[[web.Request], object]],
|
|
*,
|
|
definitions: Iterable[RouteDefinition] = ROUTE_DEFINITIONS,
|
|
) -> None:
|
|
"""Register each route definition using the supplied handlers."""
|
|
|
|
for definition in definitions:
|
|
handler = handler_lookup[definition.handler_name]
|
|
self._bind_route(definition.method, definition.path, handler)
|
|
|
|
def _bind_route(self, method: str, path: str, handler: Callable[[web.Request], object]) -> None:
|
|
add_method_name = self._METHOD_MAP[method.upper()]
|
|
add_method = getattr(self._app.router, add_method_name)
|
|
add_method(path, handler)
|