This is an automated email from the ASF dual-hosted git repository. michaelsmolina pushed a commit to branch 3.1 in repository https://gitbox.apache.org/repos/asf/superset.git
commit 46535a315eca8f0eb18eee941c305e594836df2d Author: Pat Nadolny <[email protected]> AuthorDate: Thu Mar 21 17:06:15 2024 -0500 fix: Volatile datasource ordering in dashboard export (#19595) Co-authored-by: Michael S. Molina <[email protected]> --- superset/models/dashboard.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/superset/models/dashboard.py b/superset/models/dashboard.py index 919c832ab5..b615d886ee 100644 --- a/superset/models/dashboard.py +++ b/superset/models/dashboard.py @@ -320,9 +320,9 @@ class Dashboard(Model, AuditMixinNullable, ImportExportMixin): ) def datasets_trimmed_for_slices(self) -> list[dict[str, Any]]: # Verbose but efficient database enumeration of dashboard datasources. - slices_by_datasource: dict[ - tuple[type[BaseDatasource], int], set[Slice] - ] = defaultdict(set) + slices_by_datasource: dict[tuple[type[BaseDatasource], int], set[Slice]] = ( + defaultdict(set) + ) for slc in self.slices: slices_by_datasource[(slc.cls_model, slc.datasource_id)].add(slc) @@ -443,8 +443,11 @@ class Dashboard(Model, AuditMixinNullable, ImportExportMixin): copied_dashboard.alter_params(remote_id=dashboard_id) copied_dashboards.append(copied_dashboard) + datasource_id_list = list(datasource_ids) + datasource_id_list.sort() + eager_datasources = [] - for datasource_id, _ in datasource_ids: + for datasource_id, _ in datasource_id_list: eager_datasource = SqlaTable.get_eager_sqlatable_datasource( db.session, datasource_id )
