diff --git a/CHANGELOG.md b/CHANGELOG.md index aa01dac19..d0da3f294 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.12.1 (22 July 2020) + +* Fixed login.py sample to properly handle sitename (#652) + ## 0.12 (10 July 2020) * Added hidden_views parameter to workbook publish method (#614) diff --git a/tableauserverclient/models/workbook_item.py b/tableauserverclient/models/workbook_item.py index a7decd41f..3a3ddcdf9 100644 --- a/tableauserverclient/models/workbook_item.py +++ b/tableauserverclient/models/workbook_item.py @@ -12,6 +12,7 @@ class WorkbookItem(object): def __init__(self, project_id, name=None, show_tabs=False): self._connections = None self._content_url = None + self._webpage_url = None self._created_at = None self._id = None self._initial_tags = set() @@ -51,6 +52,10 @@ def permissions(self): def content_url(self): return self._content_url + @property + def webpage_url(self): + return self._webpage_url + @property def created_at(self): return self._created_at @@ -152,17 +157,17 @@ def _parse_common_tags(self, workbook_xml, ns): if not isinstance(workbook_xml, ET.Element): workbook_xml = ET.fromstring(workbook_xml).find('.//t:workbook', namespaces=ns) if workbook_xml is not None: - (_, _, _, _, description, updated_at, _, show_tabs, + (_, _, _, _, _, description, updated_at, _, show_tabs, project_id, project_name, owner_id, _, _, data_acceleration_config) = self._parse_element(workbook_xml, ns) - self._set_values(None, None, None, None, description, updated_at, + self._set_values(None, None, None, None, None, description, updated_at, None, show_tabs, project_id, project_name, owner_id, None, None, data_acceleration_config) return self - def _set_values(self, id, name, content_url, created_at, description, updated_at, + def _set_values(self, id, name, content_url, webpage_url, created_at, description, updated_at, size, show_tabs, project_id, project_name, owner_id, tags, views, data_acceleration_config): if id is not None: @@ -171,6 +176,8 @@ def _set_values(self, id, name, content_url, created_at, description, updated_at self.name = name if content_url: self._content_url = content_url + if webpage_url: + self._webpage_url = webpage_url if created_at: self._created_at = created_at if description: @@ -201,12 +208,12 @@ def from_response(cls, resp, ns): parsed_response = ET.fromstring(resp) all_workbook_xml = parsed_response.findall('.//t:workbook', namespaces=ns) for workbook_xml in all_workbook_xml: - (id, name, content_url, created_at, description, updated_at, size, show_tabs, + (id, name, content_url, webpage_url, created_at, description, updated_at, size, show_tabs, project_id, project_name, owner_id, tags, views, data_acceleration_config) = cls._parse_element(workbook_xml, ns) workbook_item = cls(project_id) - workbook_item._set_values(id, name, content_url, created_at, description, updated_at, + workbook_item._set_values(id, name, content_url, webpage_url, created_at, description, updated_at, size, show_tabs, None, project_name, owner_id, tags, views, data_acceleration_config) all_workbook_items.append(workbook_item) @@ -217,6 +224,7 @@ def _parse_element(workbook_xml, ns): id = workbook_xml.get('id', None) name = workbook_xml.get('name', None) content_url = workbook_xml.get('contentUrl', None) + webpage_url = workbook_xml.get('webpageUrl', None) created_at = parse_datetime(workbook_xml.get('createdAt', None)) description = workbook_xml.get('description', None) updated_at = parse_datetime(workbook_xml.get('updatedAt', None)) @@ -256,7 +264,7 @@ def _parse_element(workbook_xml, ns): if data_acceleration_elem is not None: data_acceleration_config = parse_data_acceleration_config(data_acceleration_elem) - return id, name, content_url, created_at, description, updated_at, size, show_tabs, \ + return id, name, content_url, webpage_url, created_at, description, updated_at, size, show_tabs, \ project_id, project_name, owner_id, tags, views, data_acceleration_config diff --git a/test/assets/workbook_get.xml b/test/assets/workbook_get.xml index e5fd3967b..873ca3848 100644 --- a/test/assets/workbook_get.xml +++ b/test/assets/workbook_get.xml @@ -2,13 +2,12 @@ - + - - + diff --git a/test/assets/workbook_get_by_id.xml b/test/assets/workbook_get_by_id.xml index 1b2fe9120..98dfc4a75 100644 --- a/test/assets/workbook_get_by_id.xml +++ b/test/assets/workbook_get_by_id.xml @@ -1,6 +1,6 @@ - + @@ -11,4 +11,4 @@ - \ No newline at end of file + diff --git a/test/test_workbook.py b/test/test_workbook.py index 6f0e7f18a..1a68f3437 100644 --- a/test/test_workbook.py +++ b/test/test_workbook.py @@ -56,6 +56,7 @@ def test_get(self): self.assertEqual('Superstore', all_workbooks[0].name) self.assertEqual('Superstore', all_workbooks[0].content_url) self.assertEqual(False, all_workbooks[0].show_tabs) + self.assertEqual('http://tableauserver/#/workbooks/1/views', all_workbooks[0].webpage_url) self.assertEqual(1, all_workbooks[0].size) self.assertEqual('2016-08-03T20:34:04Z', format_datetime(all_workbooks[0].created_at)) self.assertEqual('description for Superstore', all_workbooks[0].description) @@ -67,6 +68,7 @@ def test_get(self): self.assertEqual('3cc6cd06-89ce-4fdc-b935-5294135d6d42', all_workbooks[1].id) self.assertEqual('SafariSample', all_workbooks[1].name) self.assertEqual('SafariSample', all_workbooks[1].content_url) + self.assertEqual('http://tableauserver/#/workbooks/2/views', all_workbooks[1].webpage_url) self.assertEqual(False, all_workbooks[1].show_tabs) self.assertEqual(26, all_workbooks[1].size) self.assertEqual('2016-07-26T20:34:56Z', format_datetime(all_workbooks[1].created_at)) @@ -101,6 +103,7 @@ def test_get_by_id(self): self.assertEqual('3cc6cd06-89ce-4fdc-b935-5294135d6d42', single_workbook.id) self.assertEqual('SafariSample', single_workbook.name) self.assertEqual('SafariSample', single_workbook.content_url) + self.assertEqual('http://tableauserver/#/workbooks/2/views', single_workbook.webpage_url) self.assertEqual(False, single_workbook.show_tabs) self.assertEqual(26, single_workbook.size) self.assertEqual('2016-07-26T20:34:56Z', format_datetime(single_workbook.created_at))