Skip to content

Commit 3bd0440

Browse files
committed
Add version awareness to site create/update methods (#1068)
* Update sites requests for Breaking change in 3.10: flowsEnabled removed, flowsEditingEnabled and flowsSchedulingEnabled added
1 parent 096ea7a commit 3bd0440

File tree

3 files changed

+14
-31
lines changed

3 files changed

+14
-31
lines changed

tableauserverclient/server/endpoint/exceptions.py

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,34 +6,29 @@ class TableauError(Exception):
66

77

88
class ServerResponseError(TableauError):
9-
def __init__(self, code, summary, detail, url=None):
9+
def __init__(self, code, summary, detail):
1010
self.code = code
1111
self.summary = summary
1212
self.detail = detail
13-
self.url = url
1413
super(ServerResponseError, self).__init__(str(self))
1514

1615
def __str__(self):
1716
return "\n\n\t{0}: {1}\n\t\t{2}".format(self.code, self.summary, self.detail)
1817

1918
@classmethod
20-
def from_response(cls, resp, ns, url=None):
19+
def from_response(cls, resp, ns):
2120
# Check elements exist before .text
2221
parsed_response = fromstring(resp)
23-
try:
24-
error_response = cls(
25-
parsed_response.find("t:error", namespaces=ns).get("code", ""),
26-
parsed_response.find(".//t:summary", namespaces=ns).text,
27-
parsed_response.find(".//t:detail", namespaces=ns).text,
28-
url,
29-
)
30-
except Exception as e:
31-
raise NonXMLResponseError(resp)
22+
error_response = cls(
23+
parsed_response.find("t:error", namespaces=ns).get("code", ""),
24+
parsed_response.find(".//t:summary", namespaces=ns).text,
25+
parsed_response.find(".//t:detail", namespaces=ns).text,
26+
)
3227
return error_response
3328

3429

3530
class InternalServerError(TableauError):
36-
def __init__(self, server_response, request_url: str = None):
31+
def __init__(self, server_response, request_url):
3732
self.code = server_response.status_code
3833
self.content = server_response.content
3934
self.url = request_url or "server"

tableauserverclient/server/request_factory.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
from ..models import ConnectionItem
2626
from ..models import SiteItem
2727
from ..models import ProjectItem
28+
from tableauserverclient.server import Server
2829

2930

3031
def _add_multipart(parts: Dict) -> Tuple[Any, str]:

tableauserverclient/server/server.py

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
import requests
1+
from distutils.version import LooseVersion as Version
22
import urllib3
3-
43
from defusedxml.ElementTree import fromstring
5-
from packaging.version import Version
4+
65
from .endpoint import (
76
Sites,
87
Views,
@@ -36,11 +35,9 @@
3635
from .exceptions import NotSignedInError
3736
from ..namespace import Namespace
3837

38+
import requests
3939

40-
from .._version import get_versions
41-
42-
__TSC_VERSION__ = get_versions()["version"]
43-
del get_versions
40+
from distutils.version import LooseVersion as Version
4441

4542
_PRODUCT_TO_REST_VERSION = {
4643
"10.0": "2.3",
@@ -49,9 +46,6 @@
4946
"9.1": "2.0",
5047
"9.0": "2.0",
5148
}
52-
minimum_supported_server_version = "2.3"
53-
default_server_version = "2.3"
54-
client_version_header = "X-TableauServerClient-Version"
5549

5650

5751
class Server(object):
@@ -68,7 +62,7 @@ def __init__(self, server_address, use_server_version=False, http_options=None):
6862
self._session = requests.Session()
6963
self._http_options = dict()
7064

71-
self.version = default_server_version
65+
self.version = "2.3"
7266
self.auth = Auth(self)
7367
self.views = Views(self)
7468
self.users = Users(self)
@@ -95,10 +89,8 @@ def __init__(self, server_address, use_server_version=False, http_options=None):
9589
self.flow_runs = FlowRuns(self)
9690
self.metrics = Metrics(self)
9791

98-
# must set this before calling use_server_version, because that's a server call
9992
if http_options:
10093
self.add_http_options(http_options)
101-
self.add_http_version_header()
10294

10395
if use_server_version:
10496
self.use_server_version()
@@ -108,13 +100,8 @@ def add_http_options(self, options_dict):
108100
if options_dict.get("verify") == False:
109101
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
110102

111-
def add_http_version_header(self):
112-
if not self._http_options[client_version_header]:
113-
self._http_options.update({client_version_header: __TSC_VERSION__})
114-
115103
def clear_http_options(self):
116104
self._http_options = dict()
117-
self.add_http_version_header()
118105

119106
def _clear_auth(self):
120107
self._site_id = None

0 commit comments

Comments
 (0)