diff --git a/superset/daos/dashboard.py b/superset/daos/dashboard.py index cec9e43bea1e2..77f2dd9f343bf 100644 --- a/superset/daos/dashboard.py +++ b/superset/daos/dashboard.py @@ -178,15 +178,6 @@ def validate_update_slug_uniqueness(dashboard_id: int, slug: str | None) -> bool return not db.session.query(dashboard_query.exists()).scalar() return True - @staticmethod - def update_charts_owners(model: Dashboard, commit: bool = True) -> Dashboard: - owners = list(model.owners) - for slc in model.slices: - slc.owners = list(set(owners) | set(slc.owners)) - if commit: - db.session.commit() - return model - @staticmethod def set_dash_metadata( # pylint: disable=too-many-locals dashboard: Dashboard, diff --git a/superset/dashboards/commands/create.py b/superset/dashboards/commands/create.py index be7468c2efe5d..4b5cd5fb04b55 100644 --- a/superset/dashboards/commands/create.py +++ b/superset/dashboards/commands/create.py @@ -40,8 +40,7 @@ def __init__(self, data: dict[str, Any]): def run(self) -> Model: self.validate() try: - dashboard = DashboardDAO.create(attributes=self._properties, commit=False) - dashboard = DashboardDAO.update_charts_owners(dashboard, commit=True) + dashboard = DashboardDAO.create(attributes=self._properties, commit=True) except DAOCreateFailedError as ex: logger.exception(ex.exception) raise DashboardCreateFailedError() from ex diff --git a/superset/dashboards/commands/update.py b/superset/dashboards/commands/update.py index c880eebe899e0..f9975c0dd2f47 100644 --- a/superset/dashboards/commands/update.py +++ b/superset/dashboards/commands/update.py @@ -58,7 +58,6 @@ def run(self) -> Model: data=json.loads(self._properties.get("json_metadata", "{}")), commit=False, ) - dashboard = DashboardDAO.update_charts_owners(dashboard, commit=False) db.session.commit() except DAOUpdateFailedError as ex: logger.exception(ex.exception) diff --git a/tests/integration_tests/dashboards/api_tests.py b/tests/integration_tests/dashboards/api_tests.py index f676e873b700f..cc7bc109b4561 100644 --- a/tests/integration_tests/dashboards/api_tests.py +++ b/tests/integration_tests/dashboards/api_tests.py @@ -1378,55 +1378,6 @@ def test_dashboard_get_no_username(self): db.session.delete(model) db.session.commit() - @pytest.mark.usefixtures("load_birth_names_dashboard_with_slices") - def test_update_dashboard_chart_owners(self): - """ - Dashboard API: Test update chart owners - """ - user_alpha1 = self.create_user( - "alpha1", "password", "Alpha", email="alpha1@superset.org" - ) - user_alpha2 = self.create_user( - "alpha2", "password", "Alpha", email="alpha2@superset.org" - ) - admin = self.get_user("admin") - slices = [] - slices.append( - db.session.query(Slice).filter_by(slice_name="Girl Name Cloud").first() - ) - slices.append(db.session.query(Slice).filter_by(slice_name="Trends").first()) - slices.append(db.session.query(Slice).filter_by(slice_name="Boys").first()) - - dashboard = self.insert_dashboard( - "title1", - "slug1", - [admin.id], - slices=slices, - ) - self.login(username="admin") - uri = f"api/v1/dashboard/{dashboard.id}" - dashboard_data = {"owners": [user_alpha1.id, user_alpha2.id]} - rv = self.client.put(uri, json=dashboard_data) - self.assertEqual(rv.status_code, 200) - - # verify slices owners include alpha1 and alpha2 users - slices_ids = [slice.id for slice in slices] - # Refetch Slices - slices = db.session.query(Slice).filter(Slice.id.in_(slices_ids)).all() - for slice in slices: - self.assertIn(user_alpha1, slice.owners) - self.assertIn(user_alpha2, slice.owners) - self.assertNotIn(admin, slice.owners) - # Revert owners on slice - slice.owners = [] - db.session.commit() - - # Rollback changes - db.session.delete(dashboard) - db.session.delete(user_alpha1) - db.session.delete(user_alpha2) - db.session.commit() - @pytest.mark.usefixtures("load_birth_names_dashboard_with_slices") def test_update_dashboard_chart_owners_propagation(self): """