Skip to content

Commit 5d333f5

Browse files
authored
841 enhancement rename datasource (#843)
* Add support for rename datasource * remove erroneous sys.path line * remove sys import
1 parent 54d7e59 commit 5d333f5

File tree

2 files changed

+28
-22
lines changed

2 files changed

+28
-22
lines changed

tableauserverclient/server/request_factory.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,8 @@ def _generate_xml(self, datasource_item, connection_credentials=None, connection
158158
def update_req(self, datasource_item):
159159
xml_request = ET.Element("tsRequest")
160160
datasource_element = ET.SubElement(xml_request, "datasource")
161+
if datasource_item.name:
162+
datasource_element.attrib["name"] = datasource_item.name
161163
if datasource_item.ask_data_enablement:
162164
ask_data_element = ET.SubElement(datasource_element, "askData")
163165
ask_data_element.attrib["enablement"] = datasource_item.ask_data_enablement

test/test_datasource.py

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from tableauserverclient.server.request_factory import RequestFactory
1212
from ._utils import read_xml_asset, read_xml_assets, asset
1313

14+
1415
ADD_TAGS_XML = 'datasource_add_tags.xml'
1516
GET_XML = 'datasource_get.xml'
1617
GET_EMPTY_XML = 'datasource_get_empty.xml'
@@ -106,25 +107,28 @@ def test_update(self):
106107
response_xml = read_xml_asset(UPDATE_XML)
107108
with requests_mock.mock() as m:
108109
m.put(self.baseurl + '/9dbd2263-16b5-46e1-9c43-a76bb8ab65fb', text=response_xml)
109-
single_datasource = TSC.DatasourceItem('test', '1d0304cd-3796-429f-b815-7258370b9b74')
110+
single_datasource = TSC.DatasourceItem('1d0304cd-3796-429f-b815-7258370b9b74', 'Sample datasource')
110111
single_datasource.owner_id = 'dd2239f6-ddf1-4107-981a-4cf94e415794'
112+
single_datasource._content_url = 'Sampledatasource'
111113
single_datasource._id = '9dbd2263-16b5-46e1-9c43-a76bb8ab65fb'
112114
single_datasource.certified = True
113115
single_datasource.certification_note = "Warning, here be dragons."
114-
single_datasource = self.server.datasources.update(single_datasource)
116+
updated_datasource = self.server.datasources.update(single_datasource)
115117

116-
self.assertEqual('9dbd2263-16b5-46e1-9c43-a76bb8ab65fb', single_datasource.id)
117-
self.assertEqual('1d0304cd-3796-429f-b815-7258370b9b74', single_datasource.project_id)
118-
self.assertEqual('dd2239f6-ddf1-4107-981a-4cf94e415794', single_datasource.owner_id)
119-
self.assertEqual(True, single_datasource.certified)
120-
self.assertEqual("Warning, here be dragons.", single_datasource.certification_note)
118+
self.assertEqual(updated_datasource.id, single_datasource.id)
119+
self.assertEqual(updated_datasource.name, single_datasource.name)
120+
self.assertEqual(updated_datasource.content_url, single_datasource.content_url)
121+
self.assertEqual(updated_datasource.project_id, single_datasource.project_id)
122+
self.assertEqual(updated_datasource.owner_id, single_datasource.owner_id)
123+
self.assertEqual(updated_datasource.certified, single_datasource.certified)
124+
self.assertEqual(updated_datasource.certification_note, single_datasource.certification_note)
121125

122126
def test_update_copy_fields(self):
123127
with open(asset(UPDATE_XML), 'rb') as f:
124128
response_xml = f.read().decode('utf-8')
125129
with requests_mock.mock() as m:
126130
m.put(self.baseurl + '/9dbd2263-16b5-46e1-9c43-a76bb8ab65fb', text=response_xml)
127-
single_datasource = TSC.DatasourceItem('test', '1d0304cd-3796-429f-b815-7258370b9b74')
131+
single_datasource = TSC.DatasourceItem('1d0304cd-3796-429f-b815-7258370b9b74', 'test')
128132
single_datasource._id = '9dbd2263-16b5-46e1-9c43-a76bb8ab65fb'
129133
single_datasource._project_name = 'Tester'
130134
updated_datasource = self.server.datasources.update(single_datasource)
@@ -152,7 +156,7 @@ def test_populate_connections(self):
152156
response_xml = read_xml_asset(POPULATE_CONNECTIONS_XML)
153157
with requests_mock.mock() as m:
154158
m.get(self.baseurl + '/9dbd2263-16b5-46e1-9c43-a76bb8ab65fb/connections', text=response_xml)
155-
single_datasource = TSC.DatasourceItem('test', '1d0304cd-3796-429f-b815-7258370b9b74')
159+
single_datasource = TSC.DatasourceItem('1d0304cd-3796-429f-b815-7258370b9b74', 'test')
156160
single_datasource.owner_id = 'dd2239f6-ddf1-4107-981a-4cf94e415794'
157161
single_datasource._id = '9dbd2263-16b5-46e1-9c43-a76bb8ab65fb'
158162
self.server.datasources.populate_connections(single_datasource)
@@ -180,7 +184,7 @@ def test_update_connection(self):
180184
m.put(self.baseurl +
181185
'/9dbd2263-16b5-46e1-9c43-a76bb8ab65fb/connections/be786ae0-d2bf-4a4b-9b34-e2de8d2d4488',
182186
text=response_xml)
183-
single_datasource = TSC.DatasourceItem('test', '1d0304cd-3796-429f-b815-7258370b9b74')
187+
single_datasource = TSC.DatasourceItem('1d0304cd-3796-429f-b815-7258370b9b74')
184188
single_datasource.owner_id = 'dd2239f6-ddf1-4107-981a-4cf94e415794'
185189
single_datasource._id = '9dbd2263-16b5-46e1-9c43-a76bb8ab65fb'
186190
self.server.datasources.populate_connections(single_datasource)
@@ -201,7 +205,7 @@ def test_populate_permissions(self):
201205
response_xml = f.read().decode('utf-8')
202206
with requests_mock.mock() as m:
203207
m.get(self.baseurl + '/0448d2ed-590d-4fa0-b272-a2a8a24555b5/permissions', text=response_xml)
204-
single_datasource = TSC.DatasourceItem('test')
208+
single_datasource = TSC.DatasourceItem('1d0304cd-3796-429f-b815-7258370b9b74', 'test')
205209
single_datasource._id = '0448d2ed-590d-4fa0-b272-a2a8a24555b5'
206210

207211
self.server.datasources.populate_permissions(single_datasource)
@@ -226,7 +230,7 @@ def test_publish(self):
226230
response_xml = read_xml_asset(PUBLISH_XML)
227231
with requests_mock.mock() as m:
228232
m.post(self.baseurl, text=response_xml)
229-
new_datasource = TSC.DatasourceItem('SampleDS', 'ee8c6e70-43b6-11e6-af4f-f7b0d8e20760')
233+
new_datasource = TSC.DatasourceItem('ee8c6e70-43b6-11e6-af4f-f7b0d8e20760', 'SampleDS')
230234
publish_mode = self.server.PublishMode.CreateNew
231235

232236
new_datasource = self.server.datasources.publish(new_datasource,
@@ -247,7 +251,7 @@ def test_publish_a_non_packaged_file_object(self):
247251
response_xml = read_xml_asset(PUBLISH_XML)
248252
with requests_mock.mock() as m:
249253
m.post(self.baseurl, text=response_xml)
250-
new_datasource = TSC.DatasourceItem('SampleDS', 'ee8c6e70-43b6-11e6-af4f-f7b0d8e20760')
254+
new_datasource = TSC.DatasourceItem('ee8c6e70-43b6-11e6-af4f-f7b0d8e20760', 'SampleDS')
251255
publish_mode = self.server.PublishMode.CreateNew
252256

253257
with open(asset('SampleDS.tds'), 'rb') as file_object:
@@ -269,7 +273,7 @@ def test_publish_a_packaged_file_object(self):
269273
response_xml = read_xml_asset(PUBLISH_XML)
270274
with requests_mock.mock() as m:
271275
m.post(self.baseurl, text=response_xml)
272-
new_datasource = TSC.DatasourceItem('SampleDS', 'ee8c6e70-43b6-11e6-af4f-f7b0d8e20760')
276+
new_datasource = TSC.DatasourceItem('ee8c6e70-43b6-11e6-af4f-f7b0d8e20760', 'SampleDS')
273277
publish_mode = self.server.PublishMode.CreateNew
274278

275279
# Create a dummy tdsx file in memory
@@ -299,7 +303,7 @@ def test_publish_async(self):
299303
response_xml = read_xml_asset(PUBLISH_XML_ASYNC)
300304
with requests_mock.mock() as m:
301305
m.post(baseurl, text=response_xml)
302-
new_datasource = TSC.DatasourceItem('SampleDS', 'ee8c6e70-43b6-11e6-af4f-f7b0d8e20760')
306+
new_datasource = TSC.DatasourceItem('ee8c6e70-43b6-11e6-af4f-f7b0d8e20760', 'SampleDS')
303307
publish_mode = self.server.PublishMode.CreateNew
304308

305309
new_job = self.server.datasources.publish(new_datasource,
@@ -380,40 +384,40 @@ def test_download_extract_only(self):
380384
os.remove(file_path)
381385

382386
def test_update_missing_id(self):
383-
single_datasource = TSC.DatasourceItem('test', 'ee8c6e70-43b6-11e6-af4f-f7b0d8e20760')
387+
single_datasource = TSC.DatasourceItem('ee8c6e70-43b6-11e6-af4f-f7b0d8e20760', 'test')
384388
self.assertRaises(TSC.MissingRequiredFieldError, self.server.datasources.update, single_datasource)
385389

386390
def test_publish_missing_path(self):
387-
new_datasource = TSC.DatasourceItem('test', 'ee8c6e70-43b6-11e6-af4f-f7b0d8e20760')
391+
new_datasource = TSC.DatasourceItem('ee8c6e70-43b6-11e6-af4f-f7b0d8e20760', 'test')
388392
self.assertRaises(IOError, self.server.datasources.publish, new_datasource,
389393
'', self.server.PublishMode.CreateNew)
390394

391395
def test_publish_missing_mode(self):
392-
new_datasource = TSC.DatasourceItem('test', 'ee8c6e70-43b6-11e6-af4f-f7b0d8e20760')
396+
new_datasource = TSC.DatasourceItem('ee8c6e70-43b6-11e6-af4f-f7b0d8e20760', 'test')
393397
self.assertRaises(ValueError, self.server.datasources.publish, new_datasource,
394398
asset('SampleDS.tds'), None)
395399

396400
def test_publish_invalid_file_type(self):
397-
new_datasource = TSC.DatasourceItem('test', 'ee8c6e70-43b6-11e6-af4f-f7b0d8e20760')
401+
new_datasource = TSC.DatasourceItem('ee8c6e70-43b6-11e6-af4f-f7b0d8e20760', 'test')
398402
self.assertRaises(ValueError, self.server.datasources.publish, new_datasource,
399403
asset('SampleWB.twbx'), self.server.PublishMode.Append)
400404

401405
def test_publish_hyper_file_object_raises_exception(self):
402-
new_datasource = TSC.DatasourceItem('test', 'ee8c6e70-43b6-11e6-af4f-f7b0d8e20760')
406+
new_datasource = TSC.DatasourceItem('ee8c6e70-43b6-11e6-af4f-f7b0d8e20760', 'test')
403407
with open(asset('World Indicators.hyper')) as file_object:
404408
self.assertRaises(ValueError, self.server.datasources.publish, new_datasource,
405409
file_object, self.server.PublishMode.Append)
406410

407411
def test_publish_tde_file_object_raises_exception(self):
408412

409-
new_datasource = TSC.DatasourceItem('test', 'ee8c6e70-43b6-11e6-af4f-f7b0d8e20760')
413+
new_datasource = TSC.DatasourceItem('ee8c6e70-43b6-11e6-af4f-f7b0d8e20760', 'test')
410414
tds_asset = asset(os.path.join('Data', 'Tableau Samples', 'World Indicators.tde'))
411415
with open(tds_asset) as file_object:
412416
self.assertRaises(ValueError, self.server.datasources.publish, new_datasource,
413417
file_object, self.server.PublishMode.Append)
414418

415419
def test_publish_file_object_of_unknown_type_raises_exception(self):
416-
new_datasource = TSC.DatasourceItem('test', 'ee8c6e70-43b6-11e6-af4f-f7b0d8e20760')
420+
new_datasource = TSC.DatasourceItem('ee8c6e70-43b6-11e6-af4f-f7b0d8e20760', 'test')
417421

418422
with BytesIO() as file_object:
419423
file_object.write(bytes.fromhex('89504E470D0A1A0A'))

0 commit comments

Comments
 (0)