Show effective worker enabled state

This commit is contained in:
Your Name
2026-08-03 17:36:31 +05:00
parent f2effe002d
commit 5058f54629
2 changed files with 63 additions and 16 deletions
+58 -15
View File
@@ -3432,6 +3432,7 @@ async def workers(request: Request):
"""
)
settings_rows = await pool.fetch("SELECT * FROM app_settings ORDER BY category, key")
setting_values: dict[str, Any] = {}
settings = []
for row in settings_rows:
item = dict(row)
@@ -3440,6 +3441,7 @@ async def workers(request: Request):
item["value_json"] = json.loads(item["value_json"])
except json.JSONDecodeError:
pass
setting_values[str(item.get("key") or "")] = item.get("value_json")
if item.get("key") in {"ai_writer_categories", "tg_poster_schedule_json", "vk_poster_schedule_json", *AI_WORKER_ENABLED_SETTINGS.values()}:
continue
settings.append(item)
@@ -3460,6 +3462,19 @@ async def workers(request: Request):
workers=[
{
**dict(r),
"setting_enabled": (
bool(setting_values.get(AI_WORKER_ENABLED_SETTINGS[str(r["name"])]))
if str(r["name"]) in AI_WORKER_ENABLED_SETTINGS
else None
),
"effective_enabled": (
bool(r["enabled"])
and (
bool(setting_values.get(AI_WORKER_ENABLED_SETTINGS[str(r["name"])]))
if str(r["name"]) in AI_WORKER_ENABLED_SETTINGS
else True
)
),
"meta_json": json.loads(r["meta_json"]) if isinstance(r["meta_json"], str) else (r["meta_json"] or {}),
}
for r in rows
@@ -3750,22 +3765,50 @@ async def worker_toggle(request: Request, worker_name: str, csrf_token: str = Fo
pool = await get_pool()
async with pool.acquire() as conn:
async with conn.transaction():
row = await conn.fetchrow(
"""
UPDATE worker_controls
SET enabled=NOT enabled,
updated_by=$2,
updated_at=NOW()
WHERE name=$1
RETURNING enabled
""",
worker_name,
user["id"],
)
if not row:
return redirect("/workers")
enabled = bool(row["enabled"])
setting_key = AI_WORKER_ENABLED_SETTINGS.get(worker_name)
if setting_key:
current = await conn.fetchrow(
"""
SELECT wc.enabled AS worker_enabled,
COALESCE((s.value_json)::boolean, FALSE) AS setting_enabled
FROM worker_controls wc
LEFT JOIN app_settings s ON s.key=$2
WHERE wc.name=$1
""",
worker_name,
setting_key,
)
if not current:
return redirect("/workers")
enabled = not (bool(current["worker_enabled"]) and bool(current["setting_enabled"]))
await conn.execute(
"""
UPDATE worker_controls
SET enabled=$2,
updated_by=$3,
updated_at=NOW()
WHERE name=$1
""",
worker_name,
enabled,
user["id"],
)
else:
row = await conn.fetchrow(
"""
UPDATE worker_controls
SET enabled=NOT enabled,
updated_by=$2,
updated_at=NOW()
WHERE name=$1
RETURNING enabled
""",
worker_name,
user["id"],
)
if not row:
return redirect("/workers")
enabled = bool(row["enabled"])
if setting_key:
await conn.execute(
"""