Skip to content
9 changes: 8 additions & 1 deletion tableauserverclient/server/request_options.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
22 changes: 18 additions & 4 deletions test/test_request_option.py
Original file line number Diff line number Diff line change
Expand Up @@ -339,14 +339,25 @@ def test_filtering_parameters(server: TSC.Server) -> 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

# While Tableau Server side IS case sensitive with the query string,
# requiring the prefix to be "vf_Parameters", requests does not end
# up preserving the case sensitivity with the Response.Request
# object. It also shows up lowercased in the requests_mock request
# history.
resp = server.workbooks.get_request(url, request_object=opts)
query_params = parse_qs(resp.request.query)
assert "name1@" in query_params
assert "value1" in query_params["name1@"]
assert "name2$" in query_params
assert "value2" in query_params["name2$"]
assert "vf_parameters.name1@" in query_params
assert "value1" in query_params["vf_parameters.name1@"]
assert "vf_parameters.name2$" in query_params
assert "value2" in query_params["vf_parameters.name2$"]
assert "vf_parameters.name3" in query_params
assert "value3" in query_params["vf_parameters.name3"]
assert "vf_parameters.name4" in query_params
assert "value4" in query_params["vf_parameters.name4"]
assert "type" in query_params
assert "tabloid" in query_params["type"]

Expand All @@ -369,6 +380,9 @@ def test_queryset_endpoint_pagesize_filter(server: TSC.Server, page_size: int) -
_ = list(queryset)


44


@pytest.mark.parametrize("page_size", [1, 10, 100, 1_000])
def test_queryset_pagesize_filter(server: TSC.Server, page_size: int) -> None:
with requests_mock.mock() as m:
Expand Down
Loading