This commit is contained in:
Volobuev Andrey
2025-04-08 16:38:58 +03:00
parent 6ffc432b42
commit 625b50a6d2
4 changed files with 115 additions and 102 deletions

View File

@@ -2,7 +2,7 @@ from superset_tool.models import SupersetConfig
from superset_tool.client import SupersetClient
from superset_tool.utils.logger import SupersetLogger
from superset_tool.exceptions import AuthenticationError
from superset_tool.utils.fileio import save_and_unpack_dashboard, update_db_yaml, create_dashboard_export
from superset_tool.utils.fileio import save_and_unpack_dashboard, update_db_yaml, create_dashboard_export, create_temp_file
import os
import keyring
from pathlib import Path
@@ -21,9 +21,9 @@ database_config_click={"new":
"sqlalchemy_uri": "clickhousedb+connect://clicketl:XXXXXXXXXX@rgm-s-khclk.hq.root.ad:443/dm",
"uuid": "b9b67cb5-9874-4dc6-87bd-354fc33be6f9",
"database_uuid": "b9b67cb5-9874-4dc6-87bd-354fc33be6f9",
"allow_ctas": "true",
"allow_cvas": "true",
"allow_dml": "true"
"allow_ctas": "false",
"allow_cvas": "false",
"allow_dml": "false"
},
"old": {
"database_name": "Dev Clickhouse",
@@ -105,32 +105,36 @@ prod_client = SupersetClient(prod_config)
from_c = dev_client
to_c = sandbox_client
dashboard_slug = "FI0050"
#dashboard_id = 53
dashboard_id = 53
dashboard_meta = from_c.get_dashboard(dashboard_slug)
#print(dashboard_meta)
print(dashboard_meta["dashboard_title"])
#print(dashboard_meta["dashboard_title"])
dashboard_id = dashboard_meta["id"]
zip_content, filename = from_c.export_dashboard(dashboard_id, logger=logger)
superset_repo = Path("H:\\dev\\dashboards\\")
# print(f"Экспортируем дашборд ID = {dashboard_id}...")
# #Сохранение и распаковка
zip_path, unpacked_path = save_and_unpack_dashboard(
zip_content=zip_content,
original_filename=filename,
unpack=True,
logger=logger,
output_dir=os.path.join(superset_repo,dashboard_slug)
)
dest_path = os.path.join(superset_repo,dashboard_slug)
source_path = os.path.join(unpacked_path,Path(filename).stem)
update_db_yaml(database_config_click, path = source_path, logger=logger)
update_db_yaml(database_config_gp, path = source_path, logger=logger)
with create_temp_file(suffix='.dir', logger=logger) as temp_root:
# Экспорт дашборда во временную директорию
zip_content, filename = from_c.export_dashboard(dashboard_id, logger=logger)
# Сохранение и распаковка во временную директорию
zip_path, unpacked_path = save_and_unpack_dashboard(
zip_content=zip_content,
original_filename=filename,
unpack=True,
logger=logger,
output_dir=temp_root
)
# Обновление конфигураций
source_path = unpacked_path / Path(filename).stem
update_db_yaml(database_config_click, path=source_path, logger=logger)
update_db_yaml(database_config_gp, path=source_path, logger=logger)
create_dashboard_export(f"{dashboard_slug}.zip",[source_path],logger=logger)
# Создание нового экспорта во временной директории
temp_zip = temp_root / f"{dashboard_slug}.zip"
create_dashboard_export(temp_zip, [source_path], logger=logger)
zip_path = Path(f"{dashboard_slug}.zip")
to_c.import_dashboard(zip_path)
# Импорт обновленного дашборда
to_c.import_dashboard(temp_zip)