Skip to content
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
15 changes: 1 addition & 14 deletions tableauserverclient/models/tableau_auth.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,7 @@ def deprecate_site_attribute():

# The traditional auth type: username/password
class TableauAuth(Credentials):
def __init__(self, username, password, site=None, site_id=None, user_id_to_impersonate=None):
if site is not None:
deprecate_site_attribute()
site_id = site
def __init__(self, username, password, site_id=None, user_id_to_impersonate=None):
super().__init__(site_id, user_id_to_impersonate)
if password is None:
raise TabError("Must provide a password when using traditional authentication")
Expand All @@ -49,16 +46,6 @@ def __repr__(self):
uid = ""
return f"<Credentials username={self.username} password=redacted (site={self.site_id}{uid})>"

@property
def site(self):
deprecate_site_attribute()
return self.site_id

@site.setter
def site(self, value):
deprecate_site_attribute()
self.site_id = value


# A Tableau-generated Personal Access Token
class PersonalAccessTokenAuth(Credentials):
Expand Down
11 changes: 0 additions & 11 deletions tableauserverclient/server/endpoint/databases_endpoint.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,17 +88,6 @@ def _get_tables_for_database(self, database_item):
def populate_permissions(self, item):
self._permissions.populate(item)

@api(version="3.5")
def update_permission(self, item, rules):
import warnings

warnings.warn(
"Server.databases.update_permission is deprecated, "
"please use Server.databases.update_permissions instead.",
DeprecationWarning,
)
return self._permissions.update(item, rules)

@api(version="3.5")
def update_permissions(self, item, rules):
return self._permissions.update(item, rules)
Expand Down
28 changes: 6 additions & 22 deletions tableauserverclient/server/endpoint/datasources_endpoint.py
Original file line number Diff line number Diff line change
Expand Up @@ -126,9 +126,13 @@ def download(
datasource_id: str,
filepath: Optional[PathOrFileW] = None,
include_extract: bool = True,
no_extract: Optional[bool] = None,
) -> str:
return self.download_revision(datasource_id, None, filepath, include_extract, no_extract)
return self.download_revision(
datasource_id,
None,
filepath,
include_extract,
)

# Update datasource
@api(version="2.0")
Expand Down Expand Up @@ -351,17 +355,6 @@ def update_hyper_data(
def populate_permissions(self, item: DatasourceItem) -> None:
self._permissions.populate(item)

@api(version="2.0")
def update_permission(self, item, permission_item):
import warnings

warnings.warn(
"Server.datasources.update_permission is deprecated, "
"please use Server.datasources.update_permissions instead.",
DeprecationWarning,
)
self._permissions.update(item, permission_item)

@api(version="2.0")
def update_permissions(self, item: DatasourceItem, permission_item: List["PermissionsRule"]) -> None:
self._permissions.update(item, permission_item)
Expand Down Expand Up @@ -415,7 +408,6 @@ def download_revision(
revision_number: str,
filepath: Optional[PathOrFileW] = None,
include_extract: bool = True,
no_extract: Optional[bool] = None,
) -> PathOrFileW:
if not datasource_id:
error = "Datasource ID undefined."
Expand All @@ -424,14 +416,6 @@ def download_revision(
url = "{0}/{1}/content".format(self.baseurl, datasource_id)
else:
url = "{0}/{1}/revisions/{2}/content".format(self.baseurl, datasource_id, revision_number)
if no_extract is False or no_extract is True:
import warnings

warnings.warn(
"no_extract is deprecated, use include_extract instead.",
DeprecationWarning,
)
include_extract = not no_extract

if not include_extract:
url += "?includeExtract=False"
Expand Down
10 changes: 0 additions & 10 deletions tableauserverclient/server/endpoint/flows_endpoint.py
Original file line number Diff line number Diff line change
Expand Up @@ -265,16 +265,6 @@ def publish(
def populate_permissions(self, item: FlowItem) -> None:
self._permissions.populate(item)

@api(version="3.3")
def update_permission(self, item, permission_item):
import warnings

warnings.warn(
"Server.flows.update_permission is deprecated, " "please use Server.flows.update_permissions instead.",
DeprecationWarning,
)
self._permissions.update(item, permission_item)

@api(version="3.3")
def update_permissions(self, item: FlowItem, permission_item: Iterable["PermissionsRule"]) -> None:
self._permissions.update(item, permission_item)
Expand Down
18 changes: 2 additions & 16 deletions tableauserverclient/server/endpoint/groups_endpoint.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,21 +67,7 @@ def delete(self, group_id: str) -> None:
logger.info("Deleted single group (ID: {0})".format(group_id))

@api(version="2.0")
def update(
self, group_item: GroupItem, default_site_role: Optional[str] = None, as_job: bool = False
) -> Union[GroupItem, JobItem]:
# (1/8/2021): Deprecated starting v0.15
if default_site_role is not None:
import warnings

warnings.simplefilter("always", DeprecationWarning)
warnings.warn(
'Groups.update(...default_site_role=""...) is deprecated, '
"please set the minimum_site_role field of GroupItem",
DeprecationWarning,
)
group_item.minimum_site_role = default_site_role

def update(self, group_item: GroupItem, as_job: bool = False) -> Union[GroupItem, JobItem]:
url = "{0}/{1}".format(self.baseurl, group_item.id)

if not group_item.id:
Expand All @@ -93,7 +79,7 @@ def update(
elif as_job:
url = "?".join([url, "asJob=True"])

update_req = RequestFactory.Group.update_req(group_item, None)
update_req = RequestFactory.Group.update_req(group_item)
server_response = self.put_request(url, update_req)
logger.info("Updated group item (ID: {0})".format(group_item.id))
if as_job:
Expand Down
11 changes: 0 additions & 11 deletions tableauserverclient/server/endpoint/projects_endpoint.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,17 +75,6 @@ def create(self, project_item: ProjectItem, samples: bool = False) -> ProjectIte
def populate_permissions(self, item: ProjectItem) -> None:
self._permissions.populate(item)

@api(version="2.0")
def update_permission(self, item, rules):
import warnings

warnings.warn(
"Server.projects.update_permission is deprecated, "
"please use Server.projects.update_permissions instead.",
DeprecationWarning,
)
return self._permissions.update(item, rules)

@api(version="2.0")
def update_permissions(self, item, rules):
return self._permissions.update(item, rules)
Expand Down
10 changes: 0 additions & 10 deletions tableauserverclient/server/endpoint/tables_endpoint.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,16 +101,6 @@ def update_column(self, table_item, column_item):
def populate_permissions(self, item):
self._permissions.populate(item)

@api(version="3.5")
def update_permission(self, item, rules):
import warnings

warnings.warn(
"Server.tables.update_permission is deprecated, " "please use Server.tables.update_permissions instead.",
DeprecationWarning,
)
return self._permissions.update(item, rules)

@api(version="3.5")
def update_permissions(self, item, rules):
return self._permissions.update(item, rules)
Expand Down
41 changes: 6 additions & 35 deletions tableauserverclient/server/endpoint/workbooks_endpoint.py
Original file line number Diff line number Diff line change
Expand Up @@ -160,13 +160,6 @@ def update(
updated_workbook = copy.copy(workbook_item)
return updated_workbook._parse_common_tags(server_response.content, self.parent_srv.namespace)

@api(version="2.3")
def update_conn(self, *args, **kwargs):
import warnings

warnings.warn("update_conn is deprecated, please use update_connection instead")
return self.update_connection(*args, **kwargs)

# Update workbook_connection
@api(version="2.3")
def update_connection(self, workbook_item: WorkbookItem, connection_item: ConnectionItem) -> ConnectionItem:
Expand All @@ -189,9 +182,13 @@ def download(
workbook_id: str,
filepath: Optional[PathOrFileW] = None,
include_extract: bool = True,
no_extract: Optional[bool] = None,
) -> str:
return self.download_revision(workbook_id, None, filepath, include_extract, no_extract)
return self.download_revision(
workbook_id,
None,
filepath,
include_extract,
)

# Get all views of workbook
@api(version="2.0")
Expand Down Expand Up @@ -315,21 +312,11 @@ def publish(
workbook_item: WorkbookItem,
file: PathOrFileR,
mode: str,
connection_credentials: Optional["ConnectionCredentials"] = None,
connections: Optional[Sequence[ConnectionItem]] = None,
as_job: bool = False,
hidden_views: Optional[Sequence[str]] = None,
skip_connection_check: bool = False,
parameters=None,
):
if connection_credentials is not None:
import warnings

warnings.warn(
"connection_credentials is being deprecated. Use connections instead",
DeprecationWarning,
)

if isinstance(file, (str, os.PathLike)):
if not os.path.isfile(file):
error = "File path does not lead to an existing file."
Expand Down Expand Up @@ -391,12 +378,9 @@ def publish(
logger.info("Publishing {0} to server with chunking method (workbook over 64MB)".format(workbook_item.name))
upload_session_id = self.parent_srv.fileuploads.upload(file)
url = "{0}&uploadSessionId={1}".format(url, upload_session_id)
conn_creds = connection_credentials
xml_request, content_type = RequestFactory.Workbook.publish_req_chunked(
workbook_item,
connection_credentials=conn_creds,
connections=connections,
hidden_views=hidden_views,
)
else:
logger.info("Publishing {0} to server".format(filename))
Expand All @@ -411,14 +395,11 @@ def publish(
else:
raise TypeError("file should be a filepath or file object.")

conn_creds = connection_credentials
xml_request, content_type = RequestFactory.Workbook.publish_req(
workbook_item,
filename,
file_contents,
connection_credentials=conn_creds,
connections=connections,
hidden_views=hidden_views,
)
logger.debug("Request xml: {0} ".format(redact_xml(xml_request[:1000])))

Expand Down Expand Up @@ -468,7 +449,6 @@ def download_revision(
revision_number: Optional[str],
filepath: Optional[PathOrFileW] = None,
include_extract: bool = True,
no_extract: Optional[bool] = None,
) -> PathOrFileW:
if not workbook_id:
error = "Workbook ID undefined."
Expand All @@ -478,15 +458,6 @@ def download_revision(
else:
url = "{0}/{1}/revisions/{2}/content".format(self.baseurl, workbook_id, revision_number)

if no_extract is False or no_extract is True:
import warnings

warnings.warn(
"no_extract is deprecated, use include_extract instead.",
DeprecationWarning,
)
include_extract = not no_extract

if not include_extract:
url += "?includeExtract=False"

Expand Down
44 changes: 4 additions & 40 deletions tableauserverclient/server/request_factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -418,19 +418,10 @@ def create_ad_req(self, group_item: GroupItem) -> bytes:
import_element.attrib["siteRole"] = group_item.minimum_site_role
return ET.tostring(xml_request)

def update_req(self, group_item: GroupItem, default_site_role: Optional[str] = None) -> bytes:
# (1/8/2021): Deprecated starting v0.15
if default_site_role is not None:
import warnings

warnings.simplefilter("always", DeprecationWarning)
warnings.warn(
'RequestFactory.Group.update_req(...default_site_role="") is deprecated, '
"please set the minimum_site_role field of GroupItem",
DeprecationWarning,
)
group_item.minimum_site_role = default_site_role

def update_req(
self,
group_item: GroupItem,
) -> bytes:
xml_request = ET.Element("tsRequest")
group_element = ET.SubElement(xml_request, "group")

Expand Down Expand Up @@ -893,9 +884,7 @@ class WorkbookRequest(object):
def _generate_xml(
self,
workbook_item,
connection_credentials=None,
connections=None,
hidden_views=None,
):
xml_request = ET.Element("tsRequest")
workbook_element = ET.SubElement(xml_request, "workbook")
Expand All @@ -905,12 +894,6 @@ def _generate_xml(
project_element = ET.SubElement(workbook_element, "project")
project_element.attrib["id"] = str(workbook_item.project_id)

if connection_credentials is not None and connections is not None:
raise RuntimeError("You cannot set both `connections` and `connection_credentials`")

if connection_credentials is not None and connection_credentials != False:
_add_credentials_element(workbook_element, connection_credentials)

if connections is not None and connections != False and len(connections) > 0:
connections_element = ET.SubElement(workbook_element, "connections")
for connection in connections:
Expand All @@ -919,17 +902,6 @@ def _generate_xml(
if workbook_item.description is not None:
workbook_element.attrib["description"] = workbook_item.description

if hidden_views is not None:
import warnings

warnings.simplefilter("always", DeprecationWarning)
warnings.warn(
"the hidden_views parameter should now be set on the workbook directly",
DeprecationWarning,
)
if workbook_item.hidden_views is None:
workbook_item.hidden_views = hidden_views

if workbook_item.hidden_views is not None:
views_element = ET.SubElement(workbook_element, "views")
for view_name in workbook_item.hidden_views:
Expand Down Expand Up @@ -1012,15 +984,11 @@ def publish_req(
workbook_item,
filename,
file_contents,
connection_credentials=None,
connections=None,
hidden_views=None,
):
xml_request = self._generate_xml(
workbook_item,
connection_credentials=connection_credentials,
connections=connections,
hidden_views=hidden_views,
)

parts = {
Expand All @@ -1032,15 +1000,11 @@ def publish_req(
def publish_req_chunked(
self,
workbook_item,
connection_credentials=None,
connections=None,
hidden_views=None,
):
xml_request = self._generate_xml(
workbook_item,
connection_credentials=connection_credentials,
connections=connections,
hidden_views=hidden_views,
)

parts = {"request_payload": ("", xml_request, "text/xml")}
Expand Down
Loading