diff --git a/CHANGELOG.md b/CHANGELOG.md index 829ad24..5b0a2b2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ # CHANGELOG ## unreleased +- Fixed `update_dashboard` to also handle `folderUid` well. Thanks, @CantankerousBullMoose. ## 4.3.0 (2025-02-08) - Added support for querying all data source-managed alerts. Thanks, @dmyerscough. diff --git a/grafana_client/elements/_async/dashboard.py b/grafana_client/elements/_async/dashboard.py index 11e7dcd..42eb4df 100644 --- a/grafana_client/elements/_async/dashboard.py +++ b/grafana_client/elements/_async/dashboard.py @@ -40,12 +40,13 @@ async def update_dashboard(self, dashboard): :return: """ - # When the "folderId" is not available within the dashboard payload, - # populate it from the nested "meta" object, if given. - if "folderId" not in dashboard: - if "meta" in dashboard and "folderId" in dashboard["meta"]: - dashboard = dashboard.copy() - dashboard["folderId"] = dashboard["meta"]["folderId"] + # When `folderId` or `folderUid` are not available within the dashboard payload, + # populate them from the nested `meta` object, when given. + for attribute in ["folderId", "folderUid"]: + if attribute not in dashboard: + if "meta" in dashboard and attribute in dashboard["meta"]: + dashboard = dashboard.copy() + dashboard[attribute] = dashboard["meta"][attribute] put_dashboard_path = "/dashboards/db" return await self.client.POST(put_dashboard_path, json=dashboard) diff --git a/grafana_client/elements/dashboard.py b/grafana_client/elements/dashboard.py index 5c3f273..7cbefa8 100644 --- a/grafana_client/elements/dashboard.py +++ b/grafana_client/elements/dashboard.py @@ -40,12 +40,13 @@ def update_dashboard(self, dashboard): :return: """ - # When the "folderId" is not available within the dashboard payload, - # populate it from the nested "meta" object, if given. - if "folderId" not in dashboard: - if "meta" in dashboard and "folderId" in dashboard["meta"]: - dashboard = dashboard.copy() - dashboard["folderId"] = dashboard["meta"]["folderId"] + # When `folderId` or `folderUid` are not available within the dashboard payload, + # populate them from the nested `meta` object, when given. + for attribute in ["folderId", "folderUid"]: + if attribute not in dashboard: + if "meta" in dashboard and attribute in dashboard["meta"]: + dashboard = dashboard.copy() + dashboard[attribute] = dashboard["meta"][attribute] put_dashboard_path = "/dashboards/db" return self.client.POST(put_dashboard_path, json=dashboard)