TaskManager refactor

This commit is contained in:
2025-12-29 10:13:37 +03:00
parent 6962a78112
commit 4c9d554432
25 changed files with 2778 additions and 283 deletions

View File

@@ -218,6 +218,41 @@ class MigrationPlugin(PluginBase):
logger.info(f"[MigrationPlugin][Success] Dashboard {title} imported.")
except Exception as exc:
# Check for password error
error_msg = str(exc)
if "Must provide a password for the database" in error_msg:
# Extract database name (assuming format: "Must provide a password for the database 'PostgreSQL'")
import re
match = re.search(r"database '([^']+)'", error_msg)
db_name = match.group(1) if match else "unknown"
# Get task manager
from ..dependencies import get_task_manager
tm = get_task_manager()
task_id = params.get("_task_id")
if task_id:
input_request = {
"type": "database_password",
"databases": [db_name],
"error_message": error_msg
}
tm.await_input(task_id, input_request)
# Wait for user input
await tm.wait_for_input(task_id)
# Resume with passwords
task = tm.get_task(task_id)
passwords = task.params.get("passwords", {})
# Retry import with password
if passwords:
logger.info(f"[MigrationPlugin][Action] Retrying import for {title} with provided passwords.")
to_c.import_dashboard(file_name=tmp_new_zip, dash_id=dash_id, dash_slug=dash_slug, passwords=passwords)
logger.info(f"[MigrationPlugin][Success] Dashboard {title} imported after password injection.")
continue
logger.error(f"[MigrationPlugin][Failure] Failed to migrate dashboard {title}: {exc}", exc_info=True)
logger.info("[MigrationPlugin][Exit] Migration finished.")