Skip to content
Open
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
8 changes: 4 additions & 4 deletions tableauserverclient/server/request_factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -733,13 +733,13 @@ def update_req(self, site_item: "SiteItem", parent_srv: "Server | None" = None):
site_item.custom_subscription_email_enabled
).lower()
if site_item.custom_subscription_email is not None:
site_element.attrib["customSubscriptionEmail"] = str(site_item.custom_subscription_email).lower()
site_element.attrib["customSubscriptionEmail"] = str(site_item.custom_subscription_email)
if site_item.custom_subscription_footer_enabled is not None:
site_element.attrib["customSubscriptionFooterEnabled"] = str(
site_item.custom_subscription_footer_enabled
).lower()
if site_item.custom_subscription_footer is not None:
site_element.attrib["customSubscriptionFooter"] = str(site_item.custom_subscription_footer).lower()
site_element.attrib["customSubscriptionFooter"] = str(site_item.custom_subscription_footer)
if site_item.ask_data_mode is not None:
site_element.attrib["askDataMode"] = str(site_item.ask_data_mode)
if site_item.named_sharing_enabled is not None:
Expand Down Expand Up @@ -837,13 +837,13 @@ def create_req(self, site_item: "SiteItem", parent_srv: "Server | None" = None):
site_item.custom_subscription_email_enabled
).lower()
if site_item.custom_subscription_email is not None:
site_element.attrib["customSubscriptionEmail"] = str(site_item.custom_subscription_email).lower()
site_element.attrib["customSubscriptionEmail"] = str(site_item.custom_subscription_email)
if site_item.custom_subscription_footer_enabled is not None:
site_element.attrib["customSubscriptionFooterEnabled"] = str(
site_item.custom_subscription_footer_enabled
).lower()
if site_item.custom_subscription_footer is not None:
site_element.attrib["customSubscriptionFooter"] = str(site_item.custom_subscription_footer).lower()
site_element.attrib["customSubscriptionFooter"] = str(site_item.custom_subscription_footer)
if site_item.ask_data_mode is not None:
site_element.attrib["askDataMode"] = str(site_item.ask_data_mode)
if site_item.named_sharing_enabled is not None:
Expand Down
28 changes: 28 additions & 0 deletions test/test_site.py
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,34 @@ def test_update_missing_id(server: TSC.Server) -> None:
server.sites.update(single_site)


def test_update_subscription_email_and_footer_preserve_case() -> None:
# Regression for #1849: RequestFactory used to .lower() customSubscriptionEmail
# and customSubscriptionFooter, silently mangling caller intent. Footer
# especially, since it is displayed verbatim in outgoing subscription emails.
site = TSC.SiteItem(name="X", content_url="x")
site.custom_subscription_email = "Sales@Company.com"
site.custom_subscription_footer = "Sent by Tableau -- Confidential. See https://Example.com/Legal"

site_elem = ET.fromstring(RequestFactory.Site.update_req(site)).find(".//site")
assert site_elem is not None
assert site_elem.attrib["customSubscriptionEmail"] == "Sales@Company.com"
assert site_elem.attrib["customSubscriptionFooter"] == (
"Sent by Tableau -- Confidential. See https://Example.com/Legal"
)


def test_create_subscription_email_and_footer_preserve_case() -> None:
# Same regression for the create-site path.
site = TSC.SiteItem(name="X", content_url="x")
site.custom_subscription_email = "Support@Company.com"
site.custom_subscription_footer = "COMPANY, Inc. -- All Rights Reserved."

site_elem = ET.fromstring(RequestFactory.Site.create_req(site)).find(".//site")
assert site_elem is not None
assert site_elem.attrib["customSubscriptionEmail"] == "Support@Company.com"
assert site_elem.attrib["customSubscriptionFooter"] == "COMPANY, Inc. -- All Rights Reserved."


def test_null_site_quota(server: TSC.Server) -> None:
test_site = TSC.SiteItem("testname", "testcontenturl", tier_explorer_capacity=1, user_quota=None)
assert test_site.tier_explorer_capacity == 1
Expand Down
Loading