mirror of
https://github.com/willmiao/ComfyUI-Lora-Manager.git
synced 2026-09-21 03:01:27 -03:00
2bc9860b24
Add per-model-type filename templates ({model_name}, {version_name},
{base_model}, {author}, {first_tag}, {hash_short}, {original_name}) so
downloaded files get informative names instead of e.g. V1.safetensors.
Empty template keeps the current filename (opt-in, off by default).
- apply template automatically after downloads; rename conflicts keep
the original name and never fail the download
- record original_file_name in metadata on rename for traceability
- bulk apply via GET|POST /api/lm/{prefix}/apply-filename-template with
WebSocket progress, sharing the auto-organize lock
- settings UI lives in the new Organization tab with validation, live
preview, and per-type 'apply to library' actions
38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
"""Progress callback implementations backed by the shared WebSocket manager."""
|
|
|
|
from typing import Any, Dict, Protocol
|
|
|
|
from .model_file_service import ProgressCallback
|
|
from .websocket_manager import ws_manager
|
|
|
|
|
|
class ProgressReporter(Protocol):
|
|
"""Protocol representing an async progress callback."""
|
|
|
|
async def on_progress(self, progress_data: Dict[str, Any]) -> None:
|
|
"""Handle a progress update payload."""
|
|
|
|
|
|
class WebSocketProgressCallback(ProgressCallback):
|
|
"""WebSocket implementation of progress callback."""
|
|
|
|
async def on_progress(self, progress_data: Dict[str, Any]) -> None:
|
|
"""Send progress data via WebSocket."""
|
|
await ws_manager.broadcast_auto_organize_progress(progress_data)
|
|
|
|
|
|
class WebSocketFilenameTemplateProgressCallback(ProgressCallback):
|
|
"""WebSocket progress callback for filename template operations."""
|
|
|
|
async def on_progress(self, progress_data: Dict[str, Any]) -> None:
|
|
"""Send filename template progress via WebSocket."""
|
|
await ws_manager.broadcast_filename_template_progress(progress_data)
|
|
|
|
|
|
class WebSocketBroadcastCallback:
|
|
"""Generic WebSocket progress callback broadcasting to all clients."""
|
|
|
|
async def on_progress(self, payload: Dict[str, Any]) -> None:
|
|
"""Send the provided payload to all connected clients."""
|
|
await ws_manager.broadcast(payload)
|