From 986e2abc7e2b020523004ad94a22dceca2361f6b Mon Sep 17 00:00:00 2001 From: Stephen Mitchell Date: Mon, 11 May 2020 16:09:08 -0400 Subject: [PATCH 1/2] Clean up hidden views and make it an attribute of workbookitem --- tableauserverclient/models/workbook_item.py | 1 + .../server/endpoint/workbooks_endpoint.py | 9 +++------ tableauserverclient/server/request_factory.py | 19 +++++++------------ test/test_workbook.py | 9 ++++----- 4 files changed, 15 insertions(+), 23 deletions(-) diff --git a/tableauserverclient/models/workbook_item.py b/tableauserverclient/models/workbook_item.py index a7decd41f..37a66b5e9 100644 --- a/tableauserverclient/models/workbook_item.py +++ b/tableauserverclient/models/workbook_item.py @@ -26,6 +26,7 @@ def __init__(self, project_id, name=None, show_tabs=False): self.owner_id = None self.project_id = project_id self.show_tabs = show_tabs + self.hidden_views = None self.tags = set() self.data_acceleration_config = {'acceleration_enabled': None, 'accelerate_now': None, diff --git a/tableauserverclient/server/endpoint/workbooks_endpoint.py b/tableauserverclient/server/endpoint/workbooks_endpoint.py index c7c1000bd..e7afe8a8c 100644 --- a/tableauserverclient/server/endpoint/workbooks_endpoint.py +++ b/tableauserverclient/server/endpoint/workbooks_endpoint.py @@ -236,8 +236,7 @@ def delete_permission(self, item, capability_item): @parameter_added_in(connections='2.8') def publish( self, workbook_item, file_path, mode, - connection_credentials=None, connections=None, as_job=False, - hidden_views=None + connection_credentials=None, connections=None, as_job=False ): if connection_credentials is not None: @@ -281,8 +280,7 @@ def publish( conn_creds = connection_credentials xml_request, content_type = RequestFactory.Workbook.publish_req_chunked(workbook_item, connection_credentials=conn_creds, - connections=connections, - hidden_views=hidden_views) + connections=connections) else: logger.info('Publishing {0} to server'.format(filename)) with open(file_path, 'rb') as f: @@ -292,8 +290,7 @@ def publish( filename, file_contents, connection_credentials=conn_creds, - connections=connections, - hidden_views=hidden_views) + connections=connections) logger.debug('Request xml: {0} '.format(xml_request[:1000])) # Send the publishing request to server diff --git a/tableauserverclient/server/request_factory.py b/tableauserverclient/server/request_factory.py index fbb09fc27..315e56ceb 100644 --- a/tableauserverclient/server/request_factory.py +++ b/tableauserverclient/server/request_factory.py @@ -455,9 +455,7 @@ def add_req(self, user_item): class WorkbookRequest(object): def _generate_xml( - self, workbook_item, - connection_credentials=None, connections=None, - hidden_views=None + self, workbook_item, connection_credentials=None, connections=None ): xml_request = ET.Element('tsRequest') workbook_element = ET.SubElement(xml_request, 'workbook') @@ -478,9 +476,9 @@ def _generate_xml( for connection in connections: _add_connections_element(connections_element, connection) - if hidden_views is not None: + if workbook_item.hidden_views is not None: views_element = ET.SubElement(workbook_element, 'views') - for view_name in hidden_views: + for view_name in workbook_item.hidden_views: _add_hiddenview_element(views_element, view_name) return ET.tostring(xml_request) @@ -512,25 +510,22 @@ def update_req(self, workbook_item): def publish_req( self, workbook_item, filename, file_contents, - connection_credentials=None, connections=None, hidden_views=None + connection_credentials=None, connections=None ): xml_request = self._generate_xml(workbook_item, connection_credentials=connection_credentials, - connections=connections, - hidden_views=hidden_views) + connections=connections) parts = {'request_payload': ('', xml_request, 'text/xml'), 'tableau_workbook': (filename, file_contents, 'application/octet-stream')} return _add_multipart(parts) def publish_req_chunked( - self, workbook_item, connection_credentials=None, connections=None, - hidden_views=None + self, workbook_item, connection_credentials=None, connections=None ): xml_request = self._generate_xml(workbook_item, connection_credentials=connection_credentials, - connections=connections, - hidden_views=hidden_views) + connections=connections) parts = {'request_payload': ('', xml_request, 'text/xml')} return _add_multipart(parts) diff --git a/test/test_workbook.py b/test/test_workbook.py index f1d9df9e0..29132f09e 100644 --- a/test/test_workbook.py +++ b/test/test_workbook.py @@ -450,11 +450,10 @@ def test_publish_with_hidden_view(self): sample_workbook = os.path.join(TEST_ASSET_DIR, 'SampleWB.twbx') publish_mode = self.server.PublishMode.CreateNew - new_workbook = self.server.workbooks.publish(new_workbook, - sample_workbook, - publish_mode, - hidden_views=['GDP per capita']) - + new_workbook.hidden_views = ['GDP per capita'] + new_workbook = self.server.workbooks.publish( + new_workbook, sample_workbook, publish_mode + ) request_body = m._adapter.request_history[0]._request.body self.assertIn( b'', request_body) From 1318f3f11ddf72370e0e36b3cbee25b802edfca9 Mon Sep 17 00:00:00 2001 From: Stephen Mitchell Date: Mon, 11 May 2020 16:16:33 -0400 Subject: [PATCH 2/2] Pycodestyle error fix for one letter variable --- tableauserverclient/models/pagination_item.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tableauserverclient/models/pagination_item.py b/tableauserverclient/models/pagination_item.py index 98d6b42f9..a1f5409e3 100644 --- a/tableauserverclient/models/pagination_item.py +++ b/tableauserverclient/models/pagination_item.py @@ -31,10 +31,10 @@ def from_response(cls, resp, ns): return pagination_item @classmethod - def from_single_page_list(cls, l): + def from_single_page_list(cls, single_page_list): item = cls() item._page_number = 1 - item._page_size = len(l) - item._total_available = len(l) + item._page_size = len(single_page_list) + item._total_available = len(single_page_list) return item