From 87a7642552edf43173cb004ac93ae485444a2868 Mon Sep 17 00:00:00 2001 From: lotte-amsterdam Date: Tue, 19 May 2026 15:17:12 +0200 Subject: [PATCH] fix for filtering with header query params --- src/dso_api/dynamic_api/filters/parser.py | 12 +++++------- src/tests/test_dynamic_api/test_filters.py | 8 ++++---- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/dso_api/dynamic_api/filters/parser.py b/src/dso_api/dynamic_api/filters/parser.py index ff5f28216..f8ed7c0d5 100644 --- a/src/dso_api/dynamic_api/filters/parser.py +++ b/src/dso_api/dynamic_api/filters/parser.py @@ -189,20 +189,18 @@ def from_request(cls, request) -> QueryFilterEngine: # custom query headers are passed with a DSO- prefix raw_key = key[len(cls.HEADER_PARAMS_PREFIX) :] - # default operator will be "eq" - operator = "eq" - # split on operator if passed parts = raw_key.rsplit(".", 1) - if len(parts) == 2: + has_operator = len(parts) == 2 + + if has_operator: raw_key, operator = parts[0], parts[1].lower() # convert query param to camelCase - query_part = raw_key.replace("-", "") - query_param = toCamelCase(query_part) + query_param = toCamelCase(raw_key.replace("-", "")) - new_key = f"{query_param}[{operator}]" + new_key = f"{query_param}[{operator}]" if has_operator else query_param dso_headers.setlist(new_key, [value]) diff --git a/src/tests/test_dynamic_api/test_filters.py b/src/tests/test_dynamic_api/test_filters.py index 574e59719..956878ff0 100644 --- a/src/tests/test_dynamic_api/test_filters.py +++ b/src/tests/test_dynamic_api/test_filters.py @@ -153,8 +153,8 @@ def test_dso_headers_overwrite_query(self, movies_model, movie1, movie2): "other-header": "ignore-me", }, { - "aantalBouwlagen[eq]": [5], - "status[eq]": ["active"], + "aantalBouwlagen": [5], + "status": ["active"], "aantalBouwlagen[gt]": [2], "aantalBouwlagen[lt]": [10], "perJaarPerM2[isnull]": ["true"], @@ -170,8 +170,8 @@ def test_dso_headers_overwrite_query(self, movies_model, movie1, movie2): "other-header": "ignore-me", }, { - "aantalBouwlagen[eq]": [5], - "status[eq]": ["active"], + "aantalBouwlagen": [5], + "status": ["active"], "aantalBouwlagen[gt]": [2], "aantalBouwlagen[lt]": [10], },