8000 Merge pull request #750 from tableau/get-view-id · tableau/server-client-python@62b264c · GitHub
[go: up one dir, main page]

Skip to content

Commit 62b264c

Browse files
authored
Merge pull request #750 from tableau/get-view-id
Add Get View by ID
2 parents 8e1eef5 + 15f7b56 commit 62b264c

File tree

3 files changed

+44
-0
lines changed

3 files changed

+44
-0
lines changed

tableauserverclient/server/endpoint/views_endpoint.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,16 @@ def get(self, req_options=None, usage=False):
3636
all_view_items = ViewItem.from_response(server_response.content, self.parent_srv.namespace)
3737
return all_view_items, pagination_item
3838

39+
@api(version="3.1")
40+
def get_by_id(self, view_id):
41+
if not view_id:
42+
error = "View item missing ID."
43+
raise MissingRequiredFieldError(error)
44+
logger.info('Querying single view (ID: {0})'.format(view_id))
45+
url = "{0}/{1}".format(self.baseurl, view_id)
46+
server_response = self.get_request(url)
47+
return ViewItem.from_response(server_response.content, self.parent_srv.namespace)[0]
48+
3949
@api(version="2.0")
4050
def populate_preview_image(self, view_item):
4151
if not view_item.id or not view_item.workbook_id:

test/assets/view_get_id.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
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+
<view id="d79634e1-6063-4ec9-95ff-50acbf609ff5" name="ENDANGERED SAFARI" contentUrl="SafariSample/sheets/ENDANGEREDSAFARI" createdAt="2002-05-30T09:00:00Z" updatedAt="2002-06-05T08:00:59Z" sheetType="story">
4+
<workbook id="3cc6cd06-89ce-4fdc-b935-5294135d6d42" />
5+
<owner id="5de011f8-5aa9-4d5b-b991-f462c8dd6bb7" />
6+
<project id="5241e88d-d384-4fd7-9c2f-648b5247efc5" />
7+
<tags>
8+
<tag label="tag1" />
9+
<tag label="tag2" />
10+
</tags>
11+
</view>
12+
</tsResponse>

test/test_view.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
ADD_TAGS_XML = os.path.join(TEST_ASSET_DIR, 'view_add_tags.xml')
1212
GET_XML = os.path.join(TEST_ASSET_DIR, 'view_get.xml')
13+
GET_XML_ID = os.path.join(TEST_ASSET_DIR, 'view_get_id.xml')
1314
GET_XML_USAGE = os.path.join(TEST_ASSET_DIR, 'view_get_usage.xml')
1415
POPULATE_PREVIEW_IMAGE = os.path.join(TEST_ASSET_DIR, 'Sample View Image.png')
1516
POPULATE_PDF = os.path.join(TEST_ASSET_DIR, 'populate_pdf.pdf')
@@ -60,6 +61,27 @@ def test_get(self):
6061
self.assertEqual('2002-06-05T08:00:59Z', format_datetime(all_views[1].updated_at))
6162
self.assertEqual('story', all_views[1].sheet_type)
6263

64+
def test_get_by_id(self):
65+
with open(GET_XML_ID, 'rb') as f:
66+
response_xml = f.read().decode('utf-8')
67+
with requests_mock.mock() as m:
68+
m.get(self.baseurl + '/d79634e1-6063-4ec9-95ff-50acbf609ff5', text=response_xml)
69+
view = self.server.views.get_by_id('d79634e1-6063-4ec9-95ff-50acbf609ff5')
70+
71+
self.assertEqual('d79634e1-6063-4ec9-95ff-50acbf609ff5', view.id)
72+
self.assertEqual('ENDANGERED SAFARI', view.name)
73+
self.assertEqual('SafariSample/sheets/ENDANGEREDSAFARI', view.content_url)
74+
self.assertEqual('3cc6cd06-89ce-4fdc-b935-5294135d6d42', view.workbook_id)
75+
self.assertEqual('5de011f8-5aa9-4d5b-b991-f462c8dd6bb7', view.owner_id)
76+
self.assertEqual('5241e88d-d384-4fd7-9c2f-648b5247efc5', view.project_id)
77+
self.assertEqual(set(['tag1', 'tag2']), view.tags)
78+
self.assertEqual('2002-05-30T09:00:00Z', format_datetime(view.created_at))
79+
self.assertEqual('2002-06-05T08:00:59Z', format_datetime(view.updated_at))
80+
self.assertEqual('story', view.sheet_type)
81+
82+
def test_get_by_id_missing_id(self):
83+
self.assertRaises(TSC.MissingRequiredFieldError, self.server.views.get_by_id, None)
84+
6385
def test_get_with_usage(self):
6486
with open(GET_XML_USAGE, 'rb') as f:
6587
response_xml = f.read().decode('utf-8')

0 commit comments

Comments
 (0)
0