From ae70212df31e4e483a9c316898419a55389fe619 Mon Sep 17 00:00:00 2001 From: David Aaron Suddjian <1858430+suddjian@users.noreply.github.com> Date: Fri, 15 Apr 2022 16:15:27 -0700 Subject: [PATCH] fix: deactivate embedding on a dashboard (#19626) * fix tests * commit it properly * unnecessary commit, correct type in docstring * unused import --- superset/dao/base.py | 2 +- superset/dashboards/api.py | 3 ++- tests/integration_tests/dashboards/api_tests.py | 10 +++++++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/superset/dao/base.py b/superset/dao/base.py index 607967e304..0090c4e535 100644 --- a/superset/dao/base.py +++ b/superset/dao/base.py @@ -175,7 +175,7 @@ class BaseDAO: def delete(cls, model: Model, commit: bool = True) -> Model: """ Generic delete a model - :raises: DAOCreateFailedError + :raises: DAODeleteFailedError """ try: db.session.delete(model) diff --git a/superset/dashboards/api.py b/superset/dashboards/api.py index fb9c36ca03..277e0d10c3 100644 --- a/superset/dashboards/api.py +++ b/superset/dashboards/api.py @@ -1191,5 +1191,6 @@ class DashboardRestApi(BaseSupersetModelRestApi): 500: $ref: '#/components/responses/500' """ - dashboard.embedded = [] + for embedded in dashboard.embedded: + DashboardDAO.delete(embedded) return self.response(200, message="OK") diff --git a/tests/integration_tests/dashboards/api_tests.py b/tests/integration_tests/dashboards/api_tests.py index afeab6e7db..a027dcffae 100644 --- a/tests/integration_tests/dashboards/api_tests.py +++ b/tests/integration_tests/dashboards/api_tests.py @@ -1796,6 +1796,8 @@ class TestDashboardApi(SupersetTestCase, ApiOwnersTestCaseMixin, InsertChartMixi self.assertNotEqual(result["uuid"], "") self.assertEqual(result["allowed_domains"], allowed_domains) + db.session.expire_all() + # get returns value resp = self.get_assert_metric(uri, "get_embedded") self.assertEqual(resp.status_code, 200) @@ -1810,9 +1812,13 @@ class TestDashboardApi(SupersetTestCase, ApiOwnersTestCaseMixin, InsertChartMixi # put succeeds and returns value resp = self.post_assert_metric(uri, {"allowed_domains": []}, "set_embedded") self.assertEqual(resp.status_code, 200) + result = json.loads(resp.data.decode("utf-8"))["result"] + self.assertEqual(resp.status_code, 200) self.assertIsNotNone(result["uuid"]) self.assertNotEqual(result["uuid"], "") - self.assertEqual(result["allowed_domains"], allowed_domains) + self.assertEqual(result["allowed_domains"], []) + + db.session.expire_all() # get returns changed value resp = self.get_assert_metric(uri, "get_embedded") @@ -1825,6 +1831,8 @@ class TestDashboardApi(SupersetTestCase, ApiOwnersTestCaseMixin, InsertChartMixi resp = self.delete_assert_metric(uri, "delete_embedded") self.assertEqual(resp.status_code, 200) + db.session.expire_all() + # get returns 404 resp = self.get_assert_metric(uri, "get_embedded") self.assertEqual(resp.status_code, 404)