Skip to content

Commit ea7ba86

Browse files
committed
feat: add support for new extension attributes
Closes #1629 New attributes have been added to extension site settings for upcoming Tableau Cloud releases.
1 parent 1991914 commit ea7ba86

File tree

4 files changed

+69
-0
lines changed

4 files changed

+69
-0
lines changed

tableauserverclient/models/extensions_item.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,10 @@ def __init__(self) -> None:
7777
self._enabled: Optional[bool] = None
7878
self._use_default_setting: Optional[bool] = None
7979
self.safe_list: Optional[list[SafeExtension]] = None
80+
self._allow_trusted: Optional[bool] = None
81+
self._include_tableau_built: Optional[bool] = None
82+
self._include_partner_built: Optional[bool] = None
83+
self._include_sandboxed: Optional[bool] = None
8084

8185
@property
8286
def enabled(self) -> Optional[bool]:
@@ -96,6 +100,43 @@ def use_default_setting(self) -> Optional[bool]:
96100
def use_default_setting(self, value: Optional[bool]) -> None:
97101
self._use_default_setting = value
98102

103+
104+
@property
105+
def allow_trusted(self) -> Optional[bool]:
106+
return self._allow_trusted
107+
108+
@allow_trusted.setter
109+
@property_is_boolean
110+
def allow_trusted(self, value: Optional[bool]) -> None:
111+
self._allow_trusted = value
112+
113+
@property
114+
def include_tableau_built(self) -> Optional[bool]:
115+
return self._include_tableau_built
116+
117+
@include_tableau_built.setter
118+
@property_is_boolean
119+
def include_tableau_built(self, value: Optional[bool]) -> None:
120+
self._include_tableau_built = value
121+
@property
122+
def include_partner_built(self) -> Optional[bool]:
123+
return self._include_partner_built
124+
125+
@include_partner_built.setter
126+
@property_is_boolean
127+
def include_partner_built(self, value: Optional[bool]) -> None:
128+
self._include_partner_built = value
129+
130+
@property
131+
def include_sandboxed(self) -> Optional[bool]:
132+
return self._include_sandboxed
133+
134+
@include_sandboxed.setter
135+
@property_is_boolean
136+
def include_sandboxed(self, value: Optional[bool]) -> None:
137+
self._include_sandboxed = value
138+
139+
99140
@classmethod
100141
def from_response(cls: type[Self], response, ns) -> Self:
101142
xml = fromstring(response)
@@ -108,6 +149,14 @@ def from_response(cls: type[Self], response, ns) -> Self:
108149
obj.enabled = string_to_bool(enabled_element.text)
109150
if (default_settings_element := element.find("./t:useDefaultSetting", namespaces=ns)) is not None:
110151
obj.use_default_setting = string_to_bool(default_settings_element.text)
152+
if (allow_trusted_element := element.find("./t:allowTrusted", namespaces=ns)) is not None:
153+
obj.allow_trusted = string_to_bool(allow_trusted_element.text)
154+
if (include_tableau_built_element := element.find("./t:includeTableauBuilt", namespaces=ns)) is not None:
155+
obj.include_tableau_built = string_to_bool(include_tableau_built_element.text)
156+
if (include_partner_built_element := element.find("./t:includePartnerBuilt", namespaces=ns)) is not None:
157+
obj.include_partner_built = string_to_bool(include_partner_built_element.text)
158+
if (include_sandboxed_element := element.find("./t:includeSandboxed", namespaces=ns)) is not None:
159+
obj.include_sandboxed = string_to_bool(include_sandboxed_element.text)
111160

112161
safe_list = []
113162
for safe_extension_element in element.findall("./t:safeList", namespaces=ns):

tableauserverclient/server/request_factory.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1650,6 +1650,18 @@ def update_site_extensions(self, xml_request: ET.Element, extensions_site_settin
16501650
)
16511651
default_element = ET.SubElement(ext_element, "useDefaultSetting")
16521652
default_element.text = str(extensions_site_settings.use_default_setting).lower()
1653+
if extensions_site_settings.allow_trusted is not None:
1654+
allow_trusted_element = ET.SubElement(ext_element, "allowTrusted")
1655+
allow_trusted_element.text = str(extensions_site_settings.allow_trusted).lower()
1656+
if extensions_site_settings.include_sandboxed is not None:
1657+
include_sandboxed_element = ET.SubElement(ext_element, "includeSandboxed")
1658+
include_sandboxed_element.text = str(extensions_site_settings.include_sandboxed).lower()
1659+
if extensions_site_settings.include_tableau_built is not None:
1660+
include_tableau_built_element = ET.SubElement(ext_element, "includeTableauBuilt")
1661+
include_tableau_built_element.text = str(extensions_site_settings.include_tableau_built).lower()
1662+
if extensions_site_settings.include_partner_built is not None:
1663+
include_partner_built_element = ET.SubElement(ext_element, "includePartnerBuilt")
1664+
include_partner_built_element.text = str(extensions_site_settings.include_partner_built).lower()
16531665

16541666
for safe in extensions_site_settings.safe_list or []:
16551667
safe_element = ET.SubElement(ext_element, "safeList")

test/assets/extensions_site_settings.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33
<extensionsSiteSettings>
44
<extensionsEnabled>true</extensionsEnabled>
55
<useDefaultSetting>false</useDefaultSetting>
6+
<allowTrusted>true</allowTrusted>
7+
<includeSandboxed>false</includeSandboxed>
8+
<includeTableauBuilt>>false</includeTableauBuilt>
9+
<includePartnerBuilt>false</includePartnerBuilt>
610
<safeList>
711
<url>http://localhost:9123/Dynamic.html</url>
812
<fullDataAllowed>true</fullDataAllowed>

test/test_extensions.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,10 @@ def test_get_site_settings(server: TSC.Server) -> None:
7171
assert site_settings.enabled is True
7272
assert site_settings.use_default_setting is False
7373
assert site_settings.safe_list is not None
74+
assert site_settings.allow_trusted is True
75+
assert site_settings.include_partner_built is False
76+
assert site_settings.include_sandboxed is False
77+
assert site_settings.include_tableau_built is False
7478
assert len(site_settings.safe_list) == 1
7579
first_safe = site_settings.safe_list[0]
7680
assert first_safe.url == "http://localhost:9123/Dynamic.html"

0 commit comments

Comments
 (0)