Skip to content

Commit

Permalink
chore: Refine native dashboard cleanup logic (#24864)
Browse files Browse the repository at this point in the history
  • Loading branch information
john-bodley authored Aug 9, 2023
1 parent cdf5652 commit 3458664
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 26 deletions.
39 changes: 20 additions & 19 deletions superset/cli/native_filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"""
&#9888; The <a href="/superset/slice/{slc.id}/">{slc.slice_name}
</a> filter-box chart has been migrated to a native filter.
Expand All @@ -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
Expand Down Expand Up @@ -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]
Expand Down Expand Up @@ -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)
Expand Down
17 changes: 10 additions & 7 deletions superset/utils/dashboard_filter_scopes_converter.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down

0 comments on commit 3458664

Please sign in to comment.