mirror of https://github.com/apache/superset.git
fix(assets import): Ensure old datasource ids are not referenced in imported charts (#25086)
This commit is contained in:
parent
b5bac6c876
commit
b240b795b5
|
@ -79,6 +79,7 @@ class ImportAssetsCommand(BaseCommand):
|
|||
)
|
||||
self._configs: dict[str, Any] = {}
|
||||
|
||||
# pylint: disable=too-many-locals
|
||||
@staticmethod
|
||||
def _import(session: Session, configs: dict[str, Any]) -> None:
|
||||
# import databases first
|
||||
|
@ -110,7 +111,13 @@ class ImportAssetsCommand(BaseCommand):
|
|||
chart_ids: dict[str, int] = {}
|
||||
for file_name, config in configs.items():
|
||||
if file_name.startswith("charts/"):
|
||||
config.update(dataset_info[config["dataset_uuid"]])
|
||||
dataset_dict = dataset_info[config["dataset_uuid"]]
|
||||
config.update(dataset_dict)
|
||||
# pylint: disable=line-too-long
|
||||
dataset_uid = f"{dataset_dict['datasource_id']}__{dataset_dict['datasource_type']}"
|
||||
config["params"].update({"datasource": dataset_uid})
|
||||
if "query_context" in config:
|
||||
del config["query_context"]
|
||||
chart = import_chart(session, config, overwrite=True)
|
||||
chart_ids[str(chart.uuid)] = chart.id
|
||||
|
||||
|
|
|
@ -141,6 +141,9 @@ class TestImportAssetsCommand(SupersetTestCase):
|
|||
dataset = chart.table
|
||||
assert str(dataset.uuid) == dataset_config["uuid"]
|
||||
|
||||
assert chart.query_context is None
|
||||
assert json.loads(chart.params)["datasource"] == dataset.uid
|
||||
|
||||
database = dataset.database
|
||||
assert str(database.uuid) == database_config["uuid"]
|
||||
|
||||
|
|
Loading…
Reference in New Issue