feat(models): add bulk model deletion controls
This commit is contained in:
+26
@@ -112,6 +112,32 @@ async def get_model_stats(request):
|
||||
return web.json_response({"error": "internal error"}, status=500)
|
||||
|
||||
|
||||
@routes.post("/nodes-stats/models/delete")
|
||||
async def delete_models(request):
|
||||
"""Delete one or more currently installed model files.
|
||||
|
||||
The mapper validates each supplied (type, name) pair against ComfyUI's
|
||||
current model folders before unlinking it, rather than trusting a path sent
|
||||
by the browser.
|
||||
"""
|
||||
try:
|
||||
data = await request.json()
|
||||
models = data.get("models")
|
||||
if not isinstance(models, list) or not models:
|
||||
return web.json_response({"error": "models must be a non-empty list"}, status=400)
|
||||
if len(models) > 500:
|
||||
return web.json_response({"error": "too many models"}, status=400)
|
||||
results = await asyncio.get_event_loop().run_in_executor(
|
||||
None, model_mapper.delete_models, models
|
||||
)
|
||||
deleted = [r for r in results if r.get("status") == "deleted"]
|
||||
failed = [r for r in results if r.get("status") != "deleted"]
|
||||
return web.json_response({"deleted": deleted, "failed": failed})
|
||||
except Exception:
|
||||
logger.error("nodes-stats: error deleting models", exc_info=True)
|
||||
return web.json_response({"error": "internal error"}, status=500)
|
||||
|
||||
|
||||
@routes.post("/nodes-stats/reset")
|
||||
async def reset_stats(request):
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user