10000 Merge pull request #875 from tableau/handle-personal-space-workbooks · cfmayden/server-client-python@5e38225 · GitHub
[go: up one dir, main page]

Skip to content

Commit 5e38225

Browse files
authored
Merge pull request tableau#875 from tableau/handle-personal-space-workbooks
Add handling for workbooks in personal spaces which will not have pro…
2 parents ae56feb + 1903d32 commit 5e38225

File tree

3 files changed

+44
-0
lines changed

3 files changed

+44
-0
lines changed

tableauserverclient/models/workbook_item.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from .permissions_item import PermissionsRule
1111
from ..datetime_helpers import parse_datetime
1212
import copy
13+
import uuid
1314

1415

1516
class WorkbookItem(object):
@@ -275,6 +276,10 @@ def from_response(cls, resp, ns):
275276
data_acceleration_config,
276277
) = cls._parse_element(workbook_xml, ns)
277278

279+
# workaround for Personal Space workbooks which won't have a project
280+
if not project_id:
281+
project_id = uuid.uuid4()
282+
278283
workbook_item = cls(project_id)
279284
workbook_item._set_values(
280285
id,
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
10000
@@ -0,0 +1,13 @@
1+
<?xml version='1.0' encoding='UTF-8'?>
2+
<tsResponse xmlns="http://tableau.com/api" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://tableau.com/api http://tableau.com/api/ts-api-2.3.xsd">
3+
<workbook id="3cc6cd06-89ce-4fdc-b935-5294135d6d43" name="SafariSample" description="description for SafariSample" contentUrl="SafariSample" webpageUrl="http://tableauserver/#/workbooks/2/views" showTabs="false" size="26" createdAt="2016-07-26T20:34:56Z" updatedAt="2016-07-26T20:35:05Z">
4+
<owner id="5de011f8-5aa9-4d5b-b991-f462c8dd6bb7" />
5+
<tags>
6+
<tag label="Safari" />
7+
<tag label="Sample" />
8+
</tags>
9+
<views>
10+
<view id="d79634e1-6063-4ec9-95ff-50acbf609ff5" name="ENDANGERED SAFARI" contentUrl="SafariSample/sheets/ENDANGEREDSAFARI" />
11+
</views>
12+
</workbook>
13+
</tsResponse>

test/test_workbook.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
ADD_TAGS_XML = os.path.join(TEST_ASSET_DIR, 'workbook_add_tags.xml')
2222
GET_BY_ID_XML = os.path.join(TEST_ASSET_DIR, 'workbook_get_by_id.xml')
23+
GET_BY_ID_XML_PERSONAL = os.path.join(TEST_ASSET_DIR, 'workbook_get_by_id_personal.xml')
2324
GET_EMPTY_XML = os.path.join(TEST_ASSET_DIR, 'workbook_get_empty.xml')
2425
GET_INVALID_DATE_XML = os.path.join(TEST_ASSET_DIR, 'workbook_get_invalid_date.xml')
2526
GET_XML = os.path.join(TEST_ASSET_DIR, 'workbook_get.xml')
@@ -128,6 +129,31 @@ def test_get_by_id(self):
128129
self.assertEqual('ENDANGERED SAFARI', single_workbook.views[0].name)
129130
self.assertEqual('SafariSample/sheets/ENDANGEREDSAFARI', single_workbook.views[0].content_url)
130131

132+
def test_get_by_id_personal(self):
133+
# workbooks in personal space don't have project_id or project_name
134+
with open(GET_BY_ID_XML_PERSONAL, 'rb') as f:
135+
response_xml = f.read().decode('utf-8')
136+
with requests_mock.mock() as m:
137+
m.get(self.baseurl + '/3cc6cd06-89ce-4fdc-b935-5294135d6d43', text=response_xml)
138+
single_workbook = self.server.workbooks.get_by_id('3cc6cd06-89ce-4fdc-b935-5294135d6d43')
139+
140+
self.assertEqual('3cc6cd06-89ce-4fdc-b935-5294135d6d43', single_workbook.id)
141+
self.assertEqual('SafariSample', single_workbook.name)
142+
self.assertEqual('SafariSample', single_workbook.content_url)
143+
self.assertEqua 991E l('http://tableauserver/#/workbooks/2/views', single_workbook.webpage_url)
144+
self.assertEqual(False, single_workbook.show_tabs)
145+
self.assertEqual(26, single_workbook.size)
146+
self.assertEqual('2016-07-26T20:34:56Z', format_datetime(single_workbook.created_at))
147+
self.assertEqual('description for SafariSample', single_workbook.description)
148+
self.assertEqual('2016-07-26T20:35:05Z', format_datetime(single_workbook.updated_at))
149+
self.assertTrue(single_workbook.project_id)
150+
self.assertIsNone(single_workbook.project_name)
151+
self.assertEqual('5de011f8-5aa9-4d5b-b991-f462c8dd6bb7', single_workbook.owner_id)
152+
self.assertEqual(set(['Safari', 'Sample']), single_workbook.tags)
153+
self.assertEqual('d79634e1-6063-4ec9-95ff-50acbf609ff5', single_workbook.views[0].id)
154+
self.assertEqual('ENDANGERED SAFARI', single_workbook.views[0].name)
155+
self.assertEqual('SafariSample/sheets/ENDANGEREDSAFARI', single_workbook.views[0].content_url)
156+
131157
def test_get_by_id_missing_id(self):
132158
self.assertRaises(ValueError, self.server.workbooks.get_by_id, '')
133159

0 commit comments

Comments
 (0)
0