8000 Method to add sites by name (#153) · gmiretti/server-client-python@3120696 · GitHub
[go: up one dir, main page]

10000 Skip to content

Commit 3120696

Browse files
VathsalaAchart8y8
authored andcommitted
Method to add sites by name (tableau#153)
1 parent 3fecdf4 commit 3120696

File tree

3 files changed

+35
-0
lines changed

3 files changed

+35
-0
lines changed

tableauserverclient/server/endpoint/sites_endpoint.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,17 @@ def get_by_id(self, site_id):
3333
server_response = self.get_request(url)
3434
return SiteItem.from_response(server_response.content)[0]
3535

36+
# Gets 1 site by name
37+
@api(version="2.0")
38+
def get_by_name(self, site_name):
39+
if not site_name:
40+
error = "Site Name undefined."
41+
raise ValueError(error)
42+
logger.info('Querying single site (Name: {0})'.format(site_name))
43+
url = "{0}/{1}?key=name".format(self.baseurl, site_name)
44+
server_response = self.get_request(url)
45+
return SiteItem.from_response(server_response.content)[0]
46+
3647
# Update site
3748
@api(version="2.0")
3849
def update(self, site_item):

test/assets/site_get_by_name.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
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+
<site id="dad65087-b08b-4603-af4e-2887b8aafc67" name="testsite" contentUrl="testsite"
4+
adminMode="ContentOnly" disableSubscriptions="false" state="Active" revisionHistoryEnabled="false" subscribeOthersEnabled="true" />
5+
</tsResponse>

test/test_site.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
GET_XML = os.path.join(TEST_ASSET_DIR, 'site_get.xml')
99
GET_BY_ID_XML = os.path.join(TEST_ASSET_DIR, 'site_get_by_id.xml')
10+
GET_BY_NAME_XML = os.path.join(TEST_ASSET_DIR, 'site_get_by_name.xml')
1011
UPDATE_XML = os.path.join(TEST_ASSET_DIR, 'site_update.xml')
1112
CREATE_XML = os.path.join(TEST_ASSET_DIR, 'site_create.xml')
1213

@@ -64,6 +65,24 @@ def test_get_by_id(self):
6465
def test_get_by_id_missing_id(self):
6566
self.assertRaises(ValueError, self.server.sites.get_by_id, '')
6667

68+
def test_get_by_name(self):
69+
with open(GET_BY_NAME_XML, 'rb') as f:
70+
response_xml = f.read().decode('utf-8')
71+
with requests_mock.mock() as m:
72+
m.get(self.baseurl + '/testsite?key=name', text=response_xml)
73+
single_site = self.server.sites.get_by_name('testsite')
74+
75+
self.assertEqual('dad65087-b08b-4603-af4e-2887b8aafc67', single_site.id)
76+
self.assertEqual('Active', single_site.state)
77+
self.assertEqual('testsite', single_site.name)
78+
self.assertEqual('ContentOnly', single_site.admin_mode)
79+
self.assertEqual(False, single_site.revision_history_enabled)
80+
self.assertEqual(True, single_site.subscribe_others_enabled)
81+
self.assertEqual(False, single_site.disable_subscriptions)
82+
83+
def test_get_by_name_missing_name(self):
84+
self.assertRaises(ValueError, self.server.sites.get_by_name, '')
85+
6786
def test_update(self):
6887
with open(UPDATE_XML, 'rb') as f:
6988
response_xml = f.read().decode('utf-8')

0 commit comments

Comments
 (0)
0