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

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

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
@@ -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.assertEqual('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