From b994d9f8fe0b847fa18df8fca35bc652c8924d0f Mon Sep 17 00:00:00 2001 From: Volobuev Andrey Date: Fri, 17 Oct 2025 15:41:23 +0300 Subject: [PATCH] mass import fix --- .gitignore | 1 + comment_mapping.xlsx | Bin 19406 -> 19796 bytes migration_script.py | 21 ++++++++++++--------- run_mapper.py | 9 +++++---- 4 files changed, 18 insertions(+), 13 deletions(-) diff --git a/.gitignore b/.gitignore index e921c42..5e84bf8 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ keyring passwords.py *github* *venv* *git* +*tech_spec* diff --git a/comment_mapping.xlsx b/comment_mapping.xlsx index ea20157421689380b714a00c0cb7172cbf4f6e60..2dc3c61a0ce9582c071efc6f0726fd9e68281784 100644 GIT binary patch delta 9248 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 diff --git a/migration_script.py b/migration_script.py index 6d1b450..a2b6eb1 100644 --- a/migration_script.py +++ b/migration_script.py @@ -235,15 +235,18 @@ class Migration: with create_temp_file(content=exported_content, suffix=".zip", logger=self.logger) as tmp_zip_path, \ create_temp_file(suffix=".dir", logger=self.logger) as tmp_unpack_dir: - with zipfile.ZipFile(tmp_zip_path, "r") as zip_ref: - zip_ref.extractall(tmp_unpack_dir) - - if self.db_config_replacement: - update_yamls(db_configs=[self.db_config_replacement], path=str(tmp_unpack_dir)) - - with create_temp_file(suffix=".zip", logger=self.logger) as tmp_new_zip: - create_dashboard_export(zip_path=tmp_new_zip, source_paths=[str(tmp_unpack_dir)]) - self.to_c.import_dashboard(file_name=tmp_new_zip, dash_id=dash_id, dash_slug=dash_slug) + if not self.db_config_replacement: + self.to_c.import_dashboard(file_name=tmp_zip_path, dash_id=dash_id, dash_slug=dash_slug) + else: + with zipfile.ZipFile(tmp_zip_path, "r") as zip_ref: + zip_ref.extractall(tmp_unpack_dir) + + if self.db_config_replacement: + update_yamls(db_configs=[self.db_config_replacement], path=str(tmp_unpack_dir)) + + with create_temp_file(suffix=".zip", logger=self.logger) as tmp_new_zip: + create_dashboard_export(zip_path=tmp_new_zip, source_paths=[str(tmp_unpack_dir)]) + self.to_c.import_dashboard(file_name=tmp_new_zip, dash_id=dash_id, dash_slug=dash_slug) self.logger.info("[execute_migration][Success] Dashboard %s imported.", title) except Exception as exc: diff --git a/run_mapper.py b/run_mapper.py index 99d405a..ad5532f 100644 --- a/run_mapper.py +++ b/run_mapper.py @@ -6,6 +6,7 @@ # import argparse +import keyring from superset_tool.utils.init_clients import setup_clients from superset_tool.utils.logger import SupersetLogger from superset_tool.utils.dataset_mapper import DatasetMapper @@ -33,10 +34,10 @@ def main(): # [AI_NOTE]: Конфигурация БД должна быть вынесена во внешний файл или переменные окружения. POSTGRES_CONFIG = { 'dbname': 'dwh', - 'user': 'your_user', - 'password': 'your_password', - 'host': 'your_host', - 'port': 'your_port' + 'user': keyring.get_password("system", f"dwh gp user"), + 'password': keyring.get_password("system", f"dwh gp password"), + 'host': '10.66.229.201', + 'port': '5432' } logger.info("[main][Enter] Starting dataset mapper CLI.")