diff --git a/superset/dao/base.py b/superset/dao/base.py index 607967e3041e..0090c4e535e2 100644 --- a/superset/dao/base.py +++ b/superset/dao/base.py @@ -175,7 +175,7 @@ def update( 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 fb9c36ca033b..277e0d10c34a 100644 --- a/superset/dashboards/api.py +++ b/superset/dashboards/api.py @@ -1191,5 +1191,6 @@ def delete_embedded(self, dashboard: Dashboard) -> Response: 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 afeab6e7db8e..a027dcffae60 100644 --- a/tests/integration_tests/dashboards/api_tests.py +++ b/tests/integration_tests/dashboards/api_tests.py @@ -1796,6 +1796,8 @@ def test_embedded_dashboards(self): 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 @@ def test_embedded_dashboards(self): # 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 @@ def test_embedded_dashboards(self): 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)