8000 Add support for Cataloging and Prep Conductor to TSC. (#434) · ecmyhre/server-client-python@e4ec849 · GitHub
[go: up one dir, main page]

Skip to content

Commit e4ec849

Browse files
authored
Add support for Cataloging and Prep Conductor to TSC. (tableau#434)
* Add support for Cataloging and Prep Conductor to TSC. These are toggable only when your server is licensed for the Data Management Add On, and are ignored otherwise
1 parent d8bdeae commit e4ec849

File tree

4 files changed

+46
-8
lines changed

4 files changed

+46
-8
lines changed

tableauserverclient/models/site_item.py

Lines changed: 35 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class State:
1717

1818
def __init__(self, name, content_url, admin_mode=None, user_quota=None, storage_quota=None,
1919
disable_subscriptions=False, subscribe_others_enabled=True, revision_history_enabled=False,
20-
revision_limit=None, materialized_views_mode=None):
20+
revision_limit=None, materialized_views_mode=None, flows_enabled=None, cataloging_enabled=None):
2121
self._admin_mode = None
2222
self._id = None
2323
self._num_users = None
@@ -34,6 +34,8 @@ def __init__(self, name, content_url, admin_mode=None, user_quota=None, storage_
3434
self.subscribe_others_enabled = subscribe_others_enabled
3535
self.admin_mode = admin_mode
3636
self.materialized_views_mode = materialized_views_mode
37+
self.cataloging_enabled = cataloging_enabled
38+
self.flows_enabled = flows_enabled
3739

3840
@property
3941
def admin_mode(self):
@@ -132,6 +134,22 @@ def materialized_views_mode(self):
132134
def materialized_views_mode(self, value):
133135
self._materialized_views_mode = value
134136

137+
@property
138+
def cataloging_enabled(self):
139+
return self._cataloging_enabled
140+
141+
@cataloging_enabled.setter
142+
def cataloging_enabled(self, value):
143+
self._cataloging_enabled = value
144+
145+
@property
146+
def flows_enabled(self):
147+
return self._flows_enabled
148+
149+
@flows_enabled.setter
150+
def flows_enabled(self, value):
151+
self._flows_enabled = value
152+
135153
def is_default(self):
136154
return self.name.lower() == 'default'
137155

@@ -142,16 +160,18 @@ def _parse_common_tags(self, site_xml, ns):
142160
(_, name, content_url, _, admin_mode, state,
143161
subscribe_others_enabled, disable_subscriptions, revision_history_enabled,
144162
user_quota, storage_quota, revision_limit, num_users, storage,
145-
materialized_views_mode) = self._parse_element(site_xml, ns)
163+
materialized_views_mode, cataloging_enabled, flows_enabled) = self._parse_element(site_xml, ns)
146164

147165
self._set_values(None, name, content_url, None, admin_mode, state, subscribe_others_enabled,
148166
disable_subscriptions, revision_history_enabled, user_quota, storage_quota,
149-
revision_limit, num_users, storage, materialized_views_mode)
167+
revision_limit, num_users, storage, materialized_views_mode, cataloging_enabled,
168+
flows_enabled)
150169
return self
151170

152171
def _set_values(self, id, name, content_url, status_reason, admin_mode, state,
153172
subscribe_others_enabled, disable_subscriptions, revision_history_enabled,
154-
user_quota, storage_quota, revision_limit, num_users, storage, materialized_views_mode):
173+
user_quota, storage_quota, revision_limit, num_users, storage, materialized_views_mode,
174+
flows_enabled, cataloging_enabled):
155175
if id is not None:
156176
self._id = id
157177
if name:
@@ -182,6 +202,10 @@ def _set_values(self, id, name, content_url, status_reason, admin_mode, state,
182202
self._storage = storage
183203
if materialized_views_mode:
184204
self._materialized_views_mode = materialized_views_mode
205+
if flows_enabled is not None:
206+
self.flows_enabled = flows_enabled
207+
if cataloging_enabled is not None:
208+
self.cataloging_enabled = cataloging_enabled
185209

186210
@classmethod
187211
def from_response(cls, resp, ns):
@@ -191,13 +215,14 @@ def from_response(cls, resp, ns):
191215
for site_xml in all_site_xml:
192216
(id, name, content_url, status_reason, admin_mode, state, subscribe_others_enabled,
193217
disable_subscriptions, revision_history_enabled, user_quota, storage_quota,
194-
revision_limit, num_users, storage, materialized_views_mode) = cls._parse_element(site_xml, ns)
218+
revision_limit, num_users, storage, materialized_views_mode, flows_enabled,
219+
cataloging_enabled) = cls._parse_element(site_xml, ns)
195220

196221
site_item = cls(name, content_url)
197222
site_item._set_values(id, name, content_url, status_reason, admin_mode, state,
198223
subscribe_others_enabled, disable_subscriptions, revision_history_enabled,
199224
user_quota, storage_quota, revision_limit, num_users, storage,
200-
materialized_views_mode)
225+
materialized_views_mode, flows_enabled, cataloging_enabled)
201226
all_site_items.append(site_item)
202227
return all_site_items
203228

@@ -234,9 +259,12 @@ def _parse_element(site_xml, ns):
234259

235260
materialized_views_mode = site_xml.get('materializedViewsMode', '')
236261

262+
flows_enabled = string_to_bool(site_xml.get('flowsEnabled', ''))
263+
cataloging_enabled = string_to_bool(site_xml.get('catalogingEnabled', ''))
264+
237265
return id, name, content_url, status_reason, admin_mode, state, subscribe_others_enabled,\
238266
disable_subscriptions, revision_history_enabled, user_quota, storage_quota,\
239-
revision_limit, num_users, storage, materialized_views_mode
267+
revision_limit, num_users, storage, materialized_views_mode, flows_enabled, cataloging_enabled
240268

241269

242270
# Used to convert string represented boolean to a boolean type

tableauserverclient/server/request_factory.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,10 @@ def update_req(self, site_item):
292292
site_element.attrib['revisionHistoryEnabled'] = str(site_item.revision_history_enabled).lower()
293293
if site_item.materialized_views_mode is not None:
294294
site_element.attrib['materializedViewsMode'] = str(site_item.materialized_views_mode).lower()
295+
if site_item.flows_enabled is not None:
296+
site_element.attrib['flowsEnabled'] = str(site_item.flows_enabled).lower()
297+
if site_item.cataloging_enabled is not None:
298+
site_element.attrib['catalogingEnabled'] = str(site_item.cataloging_enabled).lower()
295299
return ET.tostring(xml_request)
296300

297301
def create_req(self, site_item):
@@ -307,6 +311,10 @@ def create_req(self, site_item):
307311
site_element.attrib['storageQuota'] = str(site_item.storage_quota)
308312
if site_item.disable_subscriptions:
309313
site_element.attrib['disableSubscriptions'] = str(site_item.disable_subscriptions).lower()
314+
if site_item.flows_enabled is not None:
315+
site_element.attrib['flowsEnabled'] = str(site_item.flows_enabled).lower()
316+
if site_item.cataloging_enabled is not None:
317+
site_element.attrib['catalogingEnabled'] = str(site_item.cataloging_enabled).lower()
310318
return ET.tostring(xml_request)
311319

312320

test/assets/site_update.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
<?xml version='1.0' encoding='UTF-8'?>
22
<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="6b7179ba-b82b-4f0f-91ed-812074ac5da6" name="Tableau" contentUrl="tableau" adminMode="ContentAndUsers" userQuota="15" disableSubscriptions="true" state="Suspended" revisionHistoryEnabled="true" subscribeOthersEnabled="true" revisionLimit="13" materializedViewsEnabled="true"/>
3+
<site id="6b7179ba-b82b-4f0f-91ed-812074ac5da6" name="Tableau" contentUrl="tableau" adminMode="ContentAndUsers" userQuota="15" disableSubscriptions="true" state="Suspended" revisionHistoryEnabled="true" subscribeOthersEnabled="true" revisionLimit="13" materializedViewsEnabled="true" flowsEnabled="true" catalogingEnabled="true"/>
44
</tsResponse>

test/test_site.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,8 @@ def test_update(self):
106106
self.assertEqual(True, single_site.disable_subscriptions)
107107
self.assertEqual(15, single_site.user_quota)
108108
self.assertEqual('disable', single_site.materialized_views_mode)
109+
self.assertEqual(True, single_site.flows_enabled)
110+
self.assertEqual(True, single_site.cataloging_enabled)
109111

110112
def test_update_missing_id(self):
111113
single_site = TSC.SiteItem('test', 'test')

0 commit comments

Comments
 (0)
0