fix: append ID to filename when exporting chart (#12166)

This commit is contained in:
Beto Dealmeida 2020-12-22 14:19:05 -08:00 committed by GitHub
parent a85bb4a3f2
commit ca680cf976
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 16 deletions

View File

@ -45,7 +45,7 @@ class ExportChartsCommand(ExportModelsCommand):
@staticmethod
def _export(model: Slice) -> Iterator[Tuple[str, str]]:
chart_slug = secure_filename(model.slice_name)
file_name = f"charts/{chart_slug}.yaml"
file_name = f"charts/{chart_slug}_{model.id}.yaml"
payload = model.export_to_dict(
recursive=False,

View File

@ -49,20 +49,22 @@ class TestExportChartsCommand(SupersetTestCase):
mock_g.user = security_manager.find_user("admin")
example_chart = (
db.session.query(Slice).filter_by(slice_name="Energy Sankey").one_or_none()
db.session.query(Slice).filter_by(slice_name="Energy Sankey").one()
)
command = ExportChartsCommand([example_chart.id])
contents = dict(command.run())
expected = [
"metadata.yaml",
"charts/Energy_Sankey.yaml",
f"charts/Energy_Sankey_{example_chart.id}.yaml",
"datasets/examples/energy_usage.yaml",
"databases/examples.yaml",
]
assert expected == list(contents.keys())
metadata = yaml.safe_load(contents["charts/Energy_Sankey.yaml"])
metadata = yaml.safe_load(
contents[f"charts/Energy_Sankey_{example_chart.id}.yaml"]
)
assert metadata == {
"slice_name": "Energy Sankey",
"viz_type": "sankey",
@ -107,12 +109,14 @@ class TestExportChartsCommand(SupersetTestCase):
mock_g.user = security_manager.find_user("admin")
example_chart = (
db.session.query(Slice).filter_by(slice_name="Energy Sankey").one_or_none()
db.session.query(Slice).filter_by(slice_name="Energy Sankey").one()
)
command = ExportChartsCommand([example_chart.id])
contents = dict(command.run())
metadata = yaml.safe_load(contents["charts/Energy_Sankey.yaml"])
metadata = yaml.safe_load(
contents[f"charts/Energy_Sankey_{example_chart.id}.yaml"]
)
assert list(metadata.keys()) == [
"slice_name",
"viz_type",

View File

@ -21,6 +21,7 @@ from unittest.mock import patch
import pytest
import yaml
from werkzeug.utils import secure_filename
from superset import db, security_manager
from superset.commands.exceptions import CommandInvalidError
@ -58,19 +59,12 @@ class TestExportDashboardsCommand(SupersetTestCase):
expected_paths = {
"metadata.yaml",
"dashboards/World_Banks_Data.yaml",
"charts/Region_Filter.yaml",
"datasets/examples/wb_health_population.yaml",
"databases/examples.yaml",
"charts/Worlds_Population.yaml",
"charts/Most_Populated_Countries.yaml",
"charts/Growth_Rate.yaml",
"charts/Rural.yaml",
"charts/Life_Expectancy_VS_Rural.yaml",
"charts/Rural_Breakdown.yaml",
"charts/Worlds_Pop_Growth.yaml",
"charts/Box_plot.yaml",
"charts/Treemap.yaml",
}
for chart in example_dashboard.slices:
chart_slug = secure_filename(chart.slice_name)
expected_paths.add(f"charts/{chart_slug}_{chart.id}.yaml")
assert expected_paths == set(contents.keys())
metadata = yaml.safe_load(contents["dashboards/World_Banks_Data.yaml"])