From d7106649ee0613e00f4985be2cf0377bba554df4 Mon Sep 17 00:00:00 2001 From: khushi8112 Date: Thu, 6 Nov 2025 00:12:01 +0530 Subject: [PATCH 1/2] fix: handle between condition properly in get_link_to_report filters --- frappe/utils/data.py | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/frappe/utils/data.py b/frappe/utils/data.py index 6bb3b2aec3..4ba263f56d 100644 --- a/frappe/utils/data.py +++ b/frappe/utils/data.py @@ -1936,10 +1936,23 @@ def get_link_to_report( conditions = [] for k, v in filters.items(): if isinstance(v, list): - conditions.extend( - str(k) + "=" + '["' + str(value[0] + '"' + "," + '"' + str(value[1]) + '"]') - for value in v - ) + for value in v: + if value[0] == "between": + conditions.append( + str(k) + + "=" + + '["' + + str(value[0]) + + '",["' + + str(value[1][0]) + + '","' + + str(value[1][1]) + + '"]]' + ) + else: + conditions.append( + str(k) + "=" + '["' + str(value[0] + '"' + "," + '"' + str(value[1]) + '"]') + ) else: conditions.append(str(k) + "=" + quote(str(v))) From fc52a5ce1a131018725d37a39abc8754796f7d79 Mon Sep 17 00:00:00 2001 From: khushi8112 Date: Thu, 6 Nov 2025 16:30:57 +0530 Subject: [PATCH 2/2] test: add test case for between condition --- frappe/tests/test_utils.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/frappe/tests/test_utils.py b/frappe/tests/test_utils.py index 9c5a59bc82..47067cabef 100644 --- a/frappe/tests/test_utils.py +++ b/frappe/tests/test_utils.py @@ -31,6 +31,7 @@ from frappe.utils import ( get_bench_path, get_file_timestamp, get_gravatar, + get_link_to_report, get_site_info, get_sites, get_url, @@ -342,6 +343,13 @@ class TestFilters(IntegrationTestCase): self.assertTrue(compare(None, "is", "Not Set")) self.assertTrue(compare(None, "is", "not set")) + def test_get_link_to_report_with_between_filter(self): + filters = { + "creation": [["between", ["2024-01-01", "2024-12-31"]]], + } + link = get_link_to_report(name="ToDo", filters=filters) + self.assertIn('creation=["between",["2024-01-01","2024-12-31"]]', link) + class TestMoney(IntegrationTestCase): def test_money_in_words(self):