chore: Refine native dashboard cleanup logic (#24864)
This commit is contained in:
parent
cdf5652e5f
commit
34586648a5
|
|
@ -172,15 +172,16 @@ def upgrade(
|
|||
if (
|
||||
isinstance(value, dict)
|
||||
and value["type"] == "CHART"
|
||||
and value["meta"]["chartId"] in filter_boxes_by_id
|
||||
and (meta := value.get("meta"))
|
||||
and meta["chartId"] in filter_boxes_by_id
|
||||
):
|
||||
slc = filter_boxes_by_id[value["meta"]["chartId"]]
|
||||
slc = filter_boxes_by_id[meta["chartId"]]
|
||||
mapping[key] = key.replace("CHART-", "MARKDOWN-")
|
||||
|
||||
value["id"] = mapping[key]
|
||||
value["type"] = "MARKDOWN"
|
||||
|
||||
value["meta"]["code"] = dedent(
|
||||
meta["code"] = dedent(
|
||||
f"""
|
||||
⚠ The <a href="/superset/slice/{slc.id}/">{slc.slice_name}
|
||||
</a> filter-box chart has been migrated to a native filter.
|
||||
|
|
@ -192,14 +193,14 @@ def upgrade(
|
|||
)
|
||||
|
||||
# Save the filter-box info for recovery purposes.
|
||||
value["meta"]["native_filter_migration"] = {
|
||||
key: value["meta"].pop(key)
|
||||
meta["native_filter_migration"] = {
|
||||
key: meta.pop(key)
|
||||
for key in (
|
||||
"chartId",
|
||||
"sliceName",
|
||||
"sliceNameOverride",
|
||||
)
|
||||
if key in value["meta"]
|
||||
if key in meta
|
||||
}
|
||||
|
||||
position_json[mapping[key]] = value
|
||||
|
|
@ -291,13 +292,14 @@ def downgrade(
|
|||
if (
|
||||
isinstance(value, dict)
|
||||
and value["type"] == "MARKDOWN"
|
||||
and "native_filter_migration" in value["meta"]
|
||||
and (meta := value.get("meta"))
|
||||
and "native_filter_migration" in meta
|
||||
):
|
||||
value["meta"].update(value["meta"].pop("native_filter_migration"))
|
||||
slice_ids.add(value["meta"]["chartId"])
|
||||
meta.update(meta.pop("native_filter_migration"))
|
||||
slice_ids.add(meta["chartId"])
|
||||
mapping[key] = key.replace("MARKDOWN-", "CHART-")
|
||||
value["id"] = mapping[key]
|
||||
del value["meta"]["code"]
|
||||
del meta["code"]
|
||||
value["type"] = "CHART"
|
||||
position_json[mapping[key]] = value
|
||||
del position_json[key]
|
||||
|
|
@ -368,21 +370,20 @@ def cleanup(
|
|||
json_metadata = json.loads(dashboard.json_metadata or "{}")
|
||||
position_json = json.loads(dashboard.position_json or "{}")
|
||||
|
||||
if "native_filter_migration" not in json_metadata:
|
||||
click.echo(f"{str(dashboard)} has not been upgraded")
|
||||
continue
|
||||
|
||||
# Remove the saved filter configurations.
|
||||
del json_metadata["native_filter_migration"]
|
||||
dashboard.json_metadata = json.dumps(json_metadata)
|
||||
if "native_filter_migration" in json_metadata:
|
||||
del json_metadata["native_filter_migration"]
|
||||
dashboard.json_metadata = json.dumps(json_metadata)
|
||||
|
||||
for value in position_json.values():
|
||||
if (
|
||||
isinstance(value, dict)
|
||||
and "native_filter_migration" in value["meta"]
|
||||
and value["type"] == "MARKDOWN"
|
||||
and (meta := value.get("meta"))
|
||||
and "native_filter_migration" in meta
|
||||
):
|
||||
slice_ids.add(value["meta"]["native_filter_migration"]["chartId"])
|
||||
del value["meta"]["native_filter_migration"]
|
||||
slice_ids.add(meta["native_filter_migration"]["chartId"])
|
||||
del meta["native_filter_migration"]
|
||||
|
||||
dashboard.json_metadata = json.dumps(json_metadata)
|
||||
dashboard.position_json = json.dumps(position_json)
|
||||
|
|
|
|||
|
|
@ -298,13 +298,16 @@ def convert_filter_scopes_to_native_filters( # pylint: disable=invalid-name,too
|
|||
|
||||
for filter_box in filter_boxes:
|
||||
for value in position_json.values():
|
||||
if (
|
||||
isinstance(value, dict)
|
||||
and value["type"] == "CHART"
|
||||
and value["meta"]["chartId"] == filter_box.id
|
||||
and value["parents"] # Misnomer as this the the complete ancestry.
|
||||
):
|
||||
ancestors_by_id[filter_box.id] = set(value["parents"])
|
||||
try:
|
||||
if (
|
||||
isinstance(value, dict)
|
||||
and value["type"] == "CHART"
|
||||
and value["meta"]["chartId"] == filter_box.id
|
||||
and value["parents"] # Misnomer as this the the complete ancestry.
|
||||
):
|
||||
ancestors_by_id[filter_box.id] = set(value["parents"])
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
# Wire up the hierarchical filters.
|
||||
for this in filter_boxes:
|
||||
|
|
|
|||
Loading…
Reference in New Issue