Skip to content

RequestFactory silently lowercases customSubscriptionEmail and customSubscriptionFooter on site create/update #1849

Description

@jacalata

tableauserverclient.server.request_factory.RequestFactory calls str(value).lower() on two site-level string attributes when serializing to XML:

  • customSubscriptionEmailrequest_factory.py:736 (create-site path) and 840 (update-site path)
  • customSubscriptionFooterrequest_factory.py:742 and 846

This silently mangles caller intent:

site = server.sites.get_by_id(...)
site.custom_subscription_email = "[email protected]"
site.custom_subscription_footer = "Sent by Tableau — Confidential."
server.sites.update(site)
# server receives: customSubscriptionEmail="[email protected]"
#                  customSubscriptionFooter="sent by tableau — confidential."

Impact

  • Email: cosmetic only — SMTP treats mailboxes case-insensitively in practice, so delivery still works. But recipients see the wrong-case "from" address, and admin intent ([email protected]) is lost.
  • Footer: functionally broken — this string is displayed verbatim in outgoing subscription emails. Lowercasing removes company-name casing, sentence-start capitalization, brand terms, everything. Anyone setting a customer-facing footer via TSC gets a mangled result. There is no workaround short of editing the site through the web UI.

Proposed fix

Drop the .lower() on both attributes in both code paths. String values should be sent verbatim. Booleans are already handled by the paired *Enabled attributes and their own serialization.

Discovered while implementing tabcmd editsite parity (tableau/tabcmd#437, tabcmd PR #452).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions