From 038bd44d089991346d04d9d33a43121465a6d8fd Mon Sep 17 00:00:00 2001 From: Akhil Narang Date: Tue, 30 Dec 2025 16:30:42 +0530 Subject: [PATCH 1/2] fix(query): ignore 5th filter parameter It doesn't do anything, but many old charts, etc. still have it present, no point erroring out. Signed-off-by: Akhil Narang --- frappe/database/query.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/frappe/database/query.py b/frappe/database/query.py index 7e2afd1b6d..d0e3338e54 100644 --- a/frappe/database/query.py +++ b/frappe/database/query.py @@ -492,6 +492,9 @@ class Engine: elif len(filter) == 4: doctype, field, operator, value = filter self._apply_filter(field, value, operator, doctype, collect=collect) + elif len(filter) == 5: + doctype, field, operator, value, _ = filter + self._apply_filter(field, value, operator, doctype, collect=collect) else: raise ValueError(f"Unknown filter format: {filter}") From 92900d366c4551aa7ea0194dc3e6e61c042c546a Mon Sep 17 00:00:00 2001 From: Akhil Narang Date: Tue, 30 Dec 2025 16:54:59 +0530 Subject: [PATCH 2/2] refactor: simplify code using match Signed-off-by: Akhil Narang --- frappe/database/query.py | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/frappe/database/query.py b/frappe/database/query.py index d0e3338e54..b1adc636f5 100644 --- a/frappe/database/query.py +++ b/frappe/database/query.py @@ -483,20 +483,17 @@ class Engine: self.query = self.query.where(combined) def apply_list_filters(self, filter: list, collect: list | None = None): - if len(filter) == 2: - field, value = filter - self._apply_filter(field, value, collect=collect) - elif len(filter) == 3: - field, operator, value = filter - self._apply_filter(field, value, operator, collect=collect) - elif len(filter) == 4: - doctype, field, operator, value = filter - self._apply_filter(field, value, operator, doctype, collect=collect) - elif len(filter) == 5: - doctype, field, operator, value, _ = filter - self._apply_filter(field, value, operator, doctype, collect=collect) - else: - raise ValueError(f"Unknown filter format: {filter}") + match filter: + case [field, value]: + self._apply_filter(field, value, collect=collect) + case [field, operator, value]: + self._apply_filter(field, value, operator, collect=collect) + case [doctype, field, operator, value]: + self._apply_filter(field, value, operator, doctype, collect=collect) + case [doctype, field, operator, value, _]: + self._apply_filter(field, value, operator, doctype, collect=collect) + case _: + raise ValueError(f"Unknown filter format: {filter}") def apply_dict_filters(self, filters: dict[str, FilterValue | list], collect: list | None = None): for field, value in filters.items():