fix: Copy dashboard filters when copying dashboard (#24303)

This commit is contained in:
Jack Fragassi 2023-06-08 15:49:30 -07:00 committed by GitHub
parent c4242a3657
commit e791ba5876
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 29 additions and 0 deletions

View File

@ -331,6 +331,7 @@ class DashboardDAO(BaseDAO):
else:
dash.slices = original_dash.slices
dash.params = original_dash.params
cls.set_dash_metadata(dash, metadata, old_to_new_slice_ids)
db.session.add(dash)
db.session.commit()

View File

@ -154,6 +154,34 @@ class TestDashboardDAO(SupersetTestCase):
db.session.delete(dash)
db.session.commit()
@pytest.mark.usefixtures("load_world_bank_dashboard_with_slices")
@patch("superset.dashboards.dao.g")
def test_copy_dashboard_copies_native_filters(self, mock_g):
mock_g.user = security_manager.find_user("admin")
original_dash = (
db.session.query(Dashboard).filter_by(slug="world_health").first()
)
# Give the original dash a "native filter"
original_dash_params = original_dash.params_dict
original_dash_params["native_filter_configuration"] = [{"mock": "filter"}]
original_dash.json_metadata = json.dumps(original_dash_params)
metadata = json.loads(original_dash.json_metadata)
metadata["positions"] = original_dash.position
dash_data = {
"dashboard_title": "copied dash",
"json_metadata": json.dumps(metadata),
"css": "<css>",
"duplicate_slices": False,
}
dash = DashboardDAO.copy_dashboard(original_dash, dash_data)
self.assertEqual(
dash.params_dict["native_filter_configuration"], [{"mock": "filter"}]
)
db.session.delete(dash)
db.session.commit()
@pytest.mark.usefixtures("load_world_bank_dashboard_with_slices")
@patch("superset.dashboards.dao.g")
def test_copy_dashboard_duplicate_slices(self, mock_g):