From 769d6a2ae54682527be54a07bff582b2c83cc829 Mon Sep 17 00:00:00 2001 From: Jordan Woods <13803242+jorwoods@users.noreply.github.com> Date: Wed, 9 Jul 2025 17:38:31 -0500 Subject: [PATCH] fix: handle parameters for view filters Closes #1632 Parameters need to be prefixed with "vf_Parameters." in order to be properly registered as setting a parameter value. This PR adds that prefix where it was missing, but leaves parameter names that already included the prefix unmodified. --- tableauserverclient/server/request_options.py | 9 ++++++++- test/test_request_option.py | 14 ++++++++++---- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/tableauserverclient/server/request_options.py b/tableauserverclient/server/request_options.py index 45a4f6df..70c85d14 100644 --- a/tableauserverclient/server/request_options.py +++ b/tableauserverclient/server/request_options.py @@ -387,7 +387,14 @@ def parameter(self, name: str, value: str) -> Self: Self The current object """ - self.view_parameters.append((name, value)) + prefix = "vf_Parameters." + if name.startswith(prefix): + proper_name = name + elif name.startswith("Parameters."): + proper_name = f"vf_{name}" + else: + proper_name = f"{prefix}{name}" + self.view_parameters.append((proper_name, value)) return self def _append_view_filters(self, params) -> None: diff --git a/test/test_request_option.py b/test/test_request_option.py index dbf6dc99..bbf06bdc 100644 --- a/test/test_request_option.py +++ b/test/test_request_option.py @@ -321,14 +321,20 @@ def test_filtering_parameters(self) -> None: opts = TSC.PDFRequestOptions() opts.parameter("name1@", "value1") opts.parameter("name2$", "value2") + opts.parameter("Parameters.name3", "value3") + opts.parameter("vf_Parameters.name4", "value4") opts.page_type = TSC.PDFRequestOptions.PageType.Tabloid resp = self.server.workbooks.get_request(url, request_object=opts) query_params = parse_qs(resp.request.query) - self.assertIn("name1@", query_params) - self.assertIn("value1", query_params["name1@"]) - self.assertIn("name2$", query_params) - self.assertIn("value2", query_params["name2$"]) + self.assertIn("vf_parameters.name1@", query_params) + self.assertIn("value1", query_params["vf_parameters.name1@"]) + self.assertIn("vf_parameters.name2$", query_params) + self.assertIn("value2", query_params["vf_parameters.name2$"]) + self.assertIn("vf_parameters.name3", query_params) + self.assertIn("value3", query_params["vf_parameters.name3"]) + self.assertIn("vf_parameters.name4", query_params) + self.assertIn("value4", query_params["vf_parameters.name4"]) self.assertIn("type", query_params) self.assertIn("tabloid", query_params["type"])