8000 Add support for Cataloging and Prep Conductor to TSC. by t8y8 · Pull Request #434 · tableau/server-client-python · GitHub
[go: up one dir, main page]

Skip to content

Add support for Cataloging and Prep Conductor to TSC. #434

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
May 10, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 35 additions & 7 deletions tableauserverclient/models/site_item.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class State:

def __init__(self, name, content_url, admin_mode=None, user_quota=None, storage_quota=None,
disable_subscriptions=False, subscribe_others_enabled=True, revision_history_enabled=False,
revision_limit=None, materialized_views_mode=None):
revision_limit=None, materialized_views_mode=None, flows_enabled=None, cataloging_enabled=None):
self._admin_mode = None
self._id = None
self._num_users = None
Expand All @@ -34,6 +34,8 @@ def __init__(self, name, content_url, admin_mode=None, user_quota=None, storage_
self.subscribe_others_enabled = subscribe_others_enabled
self.admin_mode = admin_mode
self.materialized_views_mode = materialized_views_mode
self.cataloging_enabled = cataloging_enabled
self.flows_enabled = flows_enabled

@property
def admin_mode(self):
Expand Down Expand Up @@ -132,6 +134,22 @@ def materialized_views_mode(self):
def materialized_views_mode(self, value):
self._materialized_views_mode = value

@property
def cataloging_enabled(self):
return self._cataloging_enabled

@cataloging_enabled.setter
def cataloging_enabled(self, value):
self._cataloging_enabled = value

@property
def flows_enabled(self):
return self._flows_enabled

@flows_enabled.setter
def flows_enabled(self, value):
self._flows_enabled = value

def is_default(self):
return self.name.lower() == 'default'

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

self._set_values(None, name, content_url, None, admin_mode, state, subscribe_others_enabled,
disable_subscriptions, revision_history_enabled, user_quota, storage_quota,
revision_limit, num_users, storage, materialized_views_mode)
revision_limit, num_users, storage, materialized_views_mode, cataloging_enabled,
flows_enabled)
return self

def _set_values(self, id, name, content_url, status_reason, admin_mode, state,
subscribe_others_enabled, disable_subscriptions, revision_history_enabled,
user_quota, storage_quota, revision_limit, num_users, storage, materialized_views_mode):
user_quota, storage_quota, revision_limit, num_users, storage, materialized_views_mode,
flows_enabled, cataloging_enabled):
if id is not None:
self._id = id
if name:
Expand Down Expand Up @@ -182,6 +202,10 @@ def _set_values(self, id, name, content_url, status_reason, admin_mode, state,
self._storage = storage
if materialized_views_mode:
self._materialized_views_mode = materialized_views_mode
if flows_enabled is not None:
self.flows_enabled = flows_enabled
if cataloging_enabled is not None:
self.cataloging_enabled = cataloging_enabled

@classmethod
def from_response(cls, resp, ns):
Expand All @@ -191,13 +215,14 @@ def from_response(cls, resp, ns):
for site_xml in all_site_xml:
(id, name, content_url, status_reason, admin_mode, state, subscribe_others_enabled,
disable_subscriptions, revision_history_enabled, user_quota, storage_quota,
revision_limit, num_users, storage, materialized_views_mode) = cls._parse_element(site_xml, ns)
revision_limit, num_users, storage, materialized_views_mode, flows_enabled,
cataloging_enabled) = cls._parse_element(site_xml, ns)

site_item = cls(name, content_url)
site_item._set_values(id, name, content_url, status_reason, admin_mode, state,
subscribe_others_enabled, disable_subscriptions, revision_history_enabled,
user_quota, storage_quota, revision_limit, num_users, storage,
materialized_views_mode)
materialized_views_mode, flows_enabled, cataloging_enabled)
all_site_items.append(site_item)
return all_site_items

Expand Down Expand Up @@ -234,9 +259,12 @@ def _parse_element(site_xml, ns):

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

flows_enabled = string_to_bool(site_xml.get('flowsEnabled', ''))
cataloging_enabled = string_to_bool(site_xml.get('catalogingEnabled', ''))

return id, name, content_url, status_reason, admin_mode, state, subscribe_others_enabled,\
disable_subscriptions, revision_history_enabled, user_quota, storage_quota,\
revision_limit, num_users, storage, materialized_views_mode
revision_limit, num_users, storage, materialized_views_mode, flows_enabled, cataloging_enabled


# Used to convert string represented boolean to a boolean type
Expand Down
8 changes: 8 additions & 0 deletions tableauserverclient/server/request_factory.py
8000
Original file line number Diff line number Diff line change
Expand Up @@ -292,6 +292,10 @@ def update_req(self, site_item):
site_element.attrib['revisionHistoryEnabled'] = str(site_item.revision_history_enabled).lower()
if site_item.materialized_views_mode is not None:
site_element.attrib['materializedViewsMode'] = str(site_item.materialized_views_mode).lower()
if site_item.flows_enabled is not None:
site_element.attrib['flowsEnabled'] = str(site_item.flows_enabled).lower()
if site_item.cataloging_enabled is not None:
site_element.attrib['catalogingEnabled'] = str(site_item.cataloging_enabled).lower()
return ET.tostring(xml_request)

def create_req(self, site_item):
Expand All @@ -307,6 +311,10 @@ def create_req(self, site_item):
site_element.attrib['storageQuota'] = str(site_item.storage_quota)
if site_item.disable_subscriptions:
site_element.attrib['disableSubscriptions'] = str(site_item.disable_subscriptions).lower()
if site_item.flows_enabled is not None:
site_element.attrib['flowsEnabled'] = str(site_item.flows_enabled).lower()
if site_item.cataloging_enabled is not None:
site_element.attrib['catalogingEnabled'] = str(site_item.cataloging_enabled).lower()
return ET.tostring(xml_request)


Expand Down
2 changes: 1 addition & 1 deletion test/assets/site_update.xml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<?xml version='1.0' encoding='UTF-8'?>
<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">
<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"/>
<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"/>
</tsResponse>
2 changes: 2 additions & 0 deletions test/test_site.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,8 @@ def test_update(self):
self.assertEqual(True, single_site.disable_subscriptions)
self.assertEqual(15, single_site.user_quota)
self.assertEqual('disable', single_site.materialized_views_mode)
self.assertEqual(True, single_site.flows_enabled)
self.assertEqual(True, single_site.cataloging_enabled)

def test_update_missing_id(self):
single_site = TSC.SiteItem('test', 'test')
Expand Down
0