From 4dcd61f25d290d46d17b389998000fcfdb5d1d4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CNaeel=E2=80=9D?= Date: Thu, 30 Jul 2026 08:47:13 +0400 Subject: [PATCH] v1.1.39: populate empty valueList from state.out + normalize value_list --- site/app.py | 2 +- site/operations/get_params.py | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/site/app.py b/site/app.py index d0de03c..c5c3946 100644 --- a/site/app.py +++ b/site/app.py @@ -18,7 +18,7 @@ from routes.api import bp as api_bp from routes.api_test import bp as api_test_bp # Версия — меняется при КАЖДОМ изменении кода. Показывается в топбаре UI. -VERSION = "1.1.38" +VERSION = "1.1.39" app = Flask(__name__, template_folder="templates", static_folder="static") app.config["NUBES_API_ENDPOINT"] = os.getenv("NUBES_API_ENDPOINT", "https://lk-api-gateway-test.ngcloud.ru/api/v1/svc") diff --git a/site/operations/get_params.py b/site/operations/get_params.py index 56b94b6..4a930df 100644 --- a/site/operations/get_params.py +++ b/site/operations/get_params.py @@ -25,7 +25,8 @@ def get_params_with_current_values(client, op_id, instance_uid): # --- Шаг 1: текущие значения из инстанса --- inst_data = client.get(f"/instances/{instance_uid}") state_params = inst_data.get("instance", {}).get("state", {}).get("params", {}) or {} - # state_params — dict вида {"whereFail": "1", "durationMs": "0", "bodymessage": "mess", ...} + # state_params — dict вида {"whereFail": "1", "durationMs": "0", ...} + state_out = inst_data.get("instance", {}).get("state", {}).get("out", {}) or {} # --- Шаг 2: шаблон параметров операции --- tmpl_data = client.get(f"/instanceOperations/default/{op_id}") @@ -40,6 +41,13 @@ def get_params_with_current_values(client, op_id, instance_uid): required = p.get("isRequired", False) tmpl_default = p.get("defaultValue") # шаблонный default value_list = p.get("valueList") + # Заполнить пустые valueList из state.out (пользователи/базы PG и др.) + if value_list is not None and not value_list: + code_lower = code.lower() + if ("user" in code_lower or "owner" in code_lower) and isinstance(state_out.get("users"), dict): + value_list = sorted(state_out["users"].keys()) + elif "db" in code_lower and isinstance(state_out.get("databases"), dict): + value_list = sorted(state_out["databases"].keys()) dd = p.get("dataDescriptor") # вложенная структура (map-параметры) # Берём текущее значение из state.params по коду, @@ -65,7 +73,7 @@ def get_params_with_current_values(client, op_id, instance_uid): "dataType": data_type, "isRequired": required, "defaultValue": merged_value, - "valueList": value_list, + "valueList": _normalize_value_list(value_list), "refSvcId": p.get("refSvcId"), # если параметр ссылается на другой сервис "dataDescriptor": ( {