Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion tableauserverclient/server/endpoint/views_endpoint.py
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,8 @@ def populate_pdf(self, view_item: ViewItem, req_options: "PDFRequestOptions | No

req_options: PDFRequestOptions | None, default None
Optional request options for the request. These options can include
parameters such as orientation and paper size.
parameters such as orientation, paper size, and viz dimensions
(viz_width and viz_height).

Returns
-------
Expand Down
10 changes: 4 additions & 6 deletions tableauserverclient/server/endpoint/workbooks_endpoint.py
Original file line number Diff line number Diff line change
Expand Up @@ -604,12 +604,10 @@ def populate_pdf(self, workbook_item: WorkbookItem, req_options: "PDFRequestOpti
def pdf_fetcher() -> bytes:
return self._get_wb_pdf(workbook_item, req_options)

if not self.parent_srv.check_at_least_version("3.23") and req_options is not None:
if req_options.view_filters or req_options.view_parameters:
raise UnsupportedAttributeError("view_filters and view_parameters are only supported in 3.23+")

if req_options.viz_height or req_options.viz_width:
raise UnsupportedAttributeError("viz_height and viz_width are only supported in 3.23+")
if req_options is not None:
if not self.parent_srv.check_at_least_version("3.23"):
if req_options.view_filters or req_options.view_parameters:
raise UnsupportedAttributeError("view_filters and view_parameters are only supported in 3.23+")

workbook_item._set_pdf(pdf_fetcher)
logger.info(f"Populated pdf for workbook (ID: {workbook_item.id})")
Expand Down
41 changes: 38 additions & 3 deletions test/test_request_option.py
Original file line number Diff line number Diff line change
Expand Up @@ -380,9 +380,6 @@ 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 Expand Up @@ -441,3 +438,41 @@ def test_queryset_field_all(server: TSC.Server) -> None:
fields = history.qs.get("fields", [""])[0]

assert fields == "_all_"


def test_pdf_viz_dimensions_query_params() -> None:
opts = TSC.PDFRequestOptions(viz_width=1920, viz_height=1080)
params = opts.get_query_params()
assert params["vizWidth"] == 1920
assert params["vizHeight"] == 1080


def test_pdf_viz_dimensions_only_one_raises() -> None:
opts = TSC.PDFRequestOptions(viz_width=1920)
with pytest.raises(ValueError):
opts.get_query_params()

opts2 = TSC.PDFRequestOptions(viz_height=1080)
with pytest.raises(ValueError):
opts2.get_query_params()


def test_pdf_viz_dimensions_none_by_default() -> None:
opts = TSC.PDFRequestOptions()
params = opts.get_query_params()
assert "vizWidth" not in params
assert "vizHeight" not in params


def test_pdf_viz_dimensions_via_request(server: TSC.Server) -> None:
with requests_mock.mock() as m:
m.get(requests_mock.ANY)
url = server.views.baseurl + "/abc/pdf"
opts = TSC.PDFRequestOptions(viz_width=800, viz_height=600)

resp = server.views.get_request(url, request_object=opts)
query_string = parse_qs(resp.request.query)
assert "vizwidth" in query_string
assert ["800"] == query_string["vizwidth"]
assert "vizheight" in query_string
assert ["600"] == query_string["vizheight"]
3 changes: 1 addition & 2 deletions test/test_view.py
Original file line number Diff line number Diff line change
Expand Up @@ -427,8 +427,7 @@ def test_filter_excel(server: TSC.Server) -> None:
assert response == excel_file


def test_pdf_height(server: TSC.Server) -> None:
server.version = "3.8"
def test_pdf_viz_dimensions(server: TSC.Server) -> None:
response = POPULATE_PDF.read_bytes()
with requests_mock.mock() as m:
m.get(
Expand Down
1 change: 0 additions & 1 deletion test/test_workbook.py
Original file line number Diff line number Diff line change
Expand Up @@ -507,7 +507,6 @@ def test_populate_pdf_unsupported(server: TSC.Server) -> None:

def test_populate_pdf_vf_dims(server: TSC.Server) -> None:
server.version = "3.23"
server.workbooks.baseurl
response = POPULATE_PDF.read_bytes()
with requests_mock.mock() as m:
m.get(
Expand Down
Loading