From 584f63c9b004e37c6280279267c279c9978e1047 Mon Sep 17 00:00:00 2001 From: sokumon Date: Wed, 26 Mar 2025 18:40:32 +0530 Subject: [PATCH 1/2] fix: hard checks on report name length --- frappe/desk/query_report.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/frappe/desk/query_report.py b/frappe/desk/query_report.py index 30d808498d..f9e4e0ad45 100644 --- a/frappe/desk/query_report.py +++ b/frappe/desk/query_report.py @@ -316,6 +316,7 @@ def export_query(): form_params = frappe._dict(frappe.local.form_dict) csv_params = pop_csv_params(form_params) + print(form_params) clean_params(form_params) parse_json(form_params) @@ -360,17 +361,24 @@ def export_query(): content = make_xlsx(xlsx_data, "Query Report", column_widths=column_widths).getvalue() for value in (data.filters or {}).values(): - if len(report_name) > 200: - break - - if isinstance(value, list) and value: + if isinstance(value, list) and valid_report_name(report_name, "_" + ",".join(value)): report_name += "_" + ",".join(value) - elif isinstance(value, str) and value not in {"Yes", "No"}: + elif ( + isinstance(value, str) + and value not in {"Yes", "No"} + and valid_report_name(report_name, f"_{value}") + ): report_name += f"_{value}" provide_binary_file(report_name, file_extension, content) +def valid_report_name(report_name, suffix): + if len(report_name) + len(suffix) < 200: + return True + return False + + def format_fields(data: frappe._dict) -> None: for i, col in enumerate(data.columns): if col.get("fieldtype") == "Duration": From a2ead6905178a449cb17a96dc6e5fb769c2b2e2d Mon Sep 17 00:00:00 2001 From: sokumon Date: Fri, 28 Mar 2025 01:16:02 +0530 Subject: [PATCH 2/2] fix: restructure logic to generate report name --- frappe/desk/query_report.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/frappe/desk/query_report.py b/frappe/desk/query_report.py index f9e4e0ad45..f099358cd8 100644 --- a/frappe/desk/query_report.py +++ b/frappe/desk/query_report.py @@ -316,7 +316,6 @@ def export_query(): form_params = frappe._dict(frappe.local.form_dict) csv_params = pop_csv_params(form_params) - print(form_params) clean_params(form_params) parse_json(form_params) @@ -361,14 +360,14 @@ def export_query(): content = make_xlsx(xlsx_data, "Query Report", column_widths=column_widths).getvalue() for value in (data.filters or {}).values(): - if isinstance(value, list) and valid_report_name(report_name, "_" + ",".join(value)): - report_name += "_" + ",".join(value) - elif ( - isinstance(value, str) - and value not in {"Yes", "No"} - and valid_report_name(report_name, f"_{value}") - ): - report_name += f"_{value}" + suffix = "" + if isinstance(value, list): + suffix = "_" + ",".join(value) + elif isinstance(value, str) and value not in {"Yes", "No"}: + suffix = f"_{value}" + + if valid_report_name(report_name, suffix): + report_name += suffix provide_binary_file(report_name, file_extension, content)