fix(superset): Fixed API for bulk delete of embedded dashboards (#21911)
This commit is contained in:
parent
3da9687328
commit
7edf1fbdf0
|
|
@ -160,6 +160,7 @@ class DashboardDAO(BaseDAO):
|
|||
for model in models:
|
||||
model.slices = []
|
||||
model.owners = []
|
||||
model.embedded = []
|
||||
db.session.merge(model)
|
||||
# bulk delete itself
|
||||
try:
|
||||
|
|
|
|||
|
|
@ -803,6 +803,46 @@ class TestDashboardApi(SupersetTestCase, ApiOwnersTestCaseMixin, InsertChartMixi
|
|||
model = db.session.query(Dashboard).get(dashboard_id)
|
||||
self.assertEqual(model, None)
|
||||
|
||||
def test_delete_bulk_embedded_dashboards(self):
|
||||
"""
|
||||
Dashboard API: Test delete bulk embedded
|
||||
"""
|
||||
user = self.get_user("admin")
|
||||
dashboard_count = 4
|
||||
dashboard_ids = list()
|
||||
for dashboard_name_index in range(dashboard_count):
|
||||
dashboard_ids.append(
|
||||
self.insert_dashboard(
|
||||
f"title{dashboard_name_index}",
|
||||
None,
|
||||
[user.id],
|
||||
).id
|
||||
)
|
||||
self.login(username=user.username)
|
||||
for dashboard_id in dashboard_ids:
|
||||
# post succeeds and returns value
|
||||
allowed_domains = ["test.example", "embedded.example"]
|
||||
resp = self.post_assert_metric(
|
||||
f"api/v1/dashboard/{dashboard_id}/embedded",
|
||||
{"allowed_domains": allowed_domains},
|
||||
"set_embedded",
|
||||
)
|
||||
self.assertEqual(resp.status_code, 200)
|
||||
result = json.loads(resp.data.decode("utf-8"))["result"]
|
||||
self.assertIsNotNone(result["uuid"])
|
||||
self.assertNotEqual(result["uuid"], "")
|
||||
self.assertEqual(result["allowed_domains"], allowed_domains)
|
||||
argument = dashboard_ids
|
||||
uri = f"api/v1/dashboard/?q={prison.dumps(argument)}"
|
||||
rv = self.delete_assert_metric(uri, "bulk_delete")
|
||||
self.assertEqual(rv.status_code, 200)
|
||||
response = json.loads(rv.data.decode("utf-8"))
|
||||
expected_response = {"message": f"Deleted {dashboard_count} dashboards"}
|
||||
self.assertEqual(response, expected_response)
|
||||
for dashboard_id in dashboard_ids:
|
||||
model = db.session.query(Dashboard).get(dashboard_id)
|
||||
self.assertEqual(model, None)
|
||||
|
||||
def test_delete_bulk_dashboards_bad_request(self):
|
||||
"""
|
||||
Dashboard API: Test delete bulk bad request
|
||||
|
|
|
|||
Loading…
Reference in New Issue