From 61dfbe2f9fb893b06064bf573c8e986dc5390898 Mon Sep 17 00:00:00 2001 From: Akhil Narang Date: Wed, 3 Apr 2024 12:44:19 +0530 Subject: [PATCH 1/2] fix(dashboard_chart): use dict.get() to avoid a KeyError Signed-off-by: Akhil Narang --- frappe/desk/doctype/dashboard_chart/dashboard_chart.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/frappe/desk/doctype/dashboard_chart/dashboard_chart.py b/frappe/desk/doctype/dashboard_chart/dashboard_chart.py index f6badeac44..af18fbd6fe 100644 --- a/frappe/desk/doctype/dashboard_chart/dashboard_chart.py +++ b/frappe/desk/doctype/dashboard_chart/dashboard_chart.py @@ -260,7 +260,7 @@ def get_heatmap_chart_config(chart, filters, heatmap_year): } -def get_group_by_chart_config(chart, filters): +def get_group_by_chart_config(chart, filters) -> dict | None: aggregate_function = get_aggregate_function(chart.group_by_type) value_field = chart.aggregate_function_based_on or "1" group_by_field = chart.group_by_based_on @@ -281,11 +281,10 @@ def get_group_by_chart_config(chart, filters): if data: return { - "labels": [item["name"] if item["name"] else "Not Specified" for item in data], + "labels": [item.get("name", "Not Specified") for item in data], "datasets": [{"name": chart.name, "values": [item["count"] for item in data]}], } - else: - return None + return None def get_aggregate_function(chart_type): From c2d8ee2bbb067a1ed580f14e29663b43e7264e04 Mon Sep 17 00:00:00 2001 From: Akhil Narang Date: Wed, 3 Apr 2024 13:58:23 +0530 Subject: [PATCH 2/2] fix: ensure we don't try to add int and NoneType Signed-off-by: Akhil Narang --- frappe/desk/doctype/dashboard_chart/dashboard_chart.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frappe/desk/doctype/dashboard_chart/dashboard_chart.py b/frappe/desk/doctype/dashboard_chart/dashboard_chart.py index af18fbd6fe..a425da5980 100644 --- a/frappe/desk/doctype/dashboard_chart/dashboard_chart.py +++ b/frappe/desk/doctype/dashboard_chart/dashboard_chart.py @@ -303,8 +303,8 @@ def get_result(data, timegrain, from_date, to_date, chart_type): for d in result: count = 0 while data_index < len(data) and getdate(data[data_index][0]) <= d[0]: - d[1] += data[data_index][1] - count += data[data_index][2] + d[1] += cint(data[data_index][1]) + count += cint(data[data_index][2]) data_index += 1 if chart_type == "Average" and count != 0: d[1] = d[1] / count