8000 Merge pull request #13 from tableau/bugfix-4-rename_keywords · bonomali/server-client-python@1256c88 · GitHub
[go: up one dir, main page]

Skip to content

Commit 1256c88

Browse files
authored
Merge pull request tableau#13 from tableau/bugfix-4-rename_keywords
tableau#4 rename common keywords and reorder properties on item classes
2 parents cfa1f55 + 026724a commit 1256c88

21 files changed

+422
-384
lines changed

.travis.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
language: python
2+
python:
3+
- "2.7"
4+
- "3.3"
5+
- "3.4"
6+
- "3.5"
7+
- "pypy"
8+
# command to install dependencies
9+
install:
10+
- "pip install -e ."
11+
# - "pip install pep8"
12+
# command to run tests
13+
script:
14+
# Tests
15+
- python setup.py test
16+
# pep8 - disabled for now until we can scrub the files to make sure we pass before turning it on
17+
# - pep8 .

tableauserverapi/models/connection_item.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,15 @@
44

55
class ConnectionItem(object):
66
def __init__(self):
7-
self._id = None
8-
self._type = None
97
self._datasource_id = None
108
self._datasource_name = None
9+
self._id = None
10+
self._type = None
11+
self.embed_password = None
12+
self.password = None
1113
self.server_address = None
1214
self.server_port = None
1315
self.username = None
14-
self.password = None
15-
self.embed_password = None
16-
17-
@property
18-
def id(self):
19-
return self._id
20-
21-
@property
22-
def type(self):
23-
return self._type
2416

2517
@property
2618
def datasource_id(self):
@@ -30,6 +22,14 @@ def datasource_id(self):
3022
def datasource_name(self):
3123
return self._datasource_name
3224

25+
@property
26+
def id(self):
27+
return self._id
28+
29+
@property
30+
def type(self):
31+
return self._type
32+
3333
@classmethod
3434
def from_response(cls, resp):
3535
all_connection_items = list()

tableauserverapi/models/datasource_item.py

Lines changed: 46 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -6,38 +6,27 @@
66

77
class DatasourceItem(object):
88
def __init__(self, project_id, name=None):
9+
self._connections = None
910
self._content_url = None
1011
self._created_at = None
1112
self._id = None
13+
self._project_id = None
1214
self._project_name = None
1315
self._tags = set()
1416
self._type = None
1517
self._updated_at = None
16-
self._connections = None
17-
self._project_id = None
18-
self.owner_id = None
19-
self.project_id = project_id
2018
self.name = name
19+
self.owner_id = None
2120

22-
@property
23-
def project_id(self):
24-
return self._project_id
25-
26-
@project_id.setter
27-
def project_id(self, value):
28-
if value is None:
29-
error = 'Project ID must be defined.'
30-
raise ValueError(error)
31-
else:
32-
self._project_id = value
33-
34-
@property
35-
def id(self):
36-
return self._id
21+
# Invoke setter
22+
self.project_id = project_id
3723

3824
@property
39-
def type(self):
40-
return self._type
25+
def connections(self):
26+
if self._connections is None:
27+
error = 'Datasource item must be populated with connections first.'
28+
raise UnpopulatedPropertyError(error)
29+
return self._connections
4130

4231
@property
4332
def content_url(self):
@@ -48,8 +37,20 @@ def created_at(self):
4837
return self._created_at
4938

5039
@property
51-
def updated_at(self):
52-
return self._updated_at
40+
def id(self):
41+
return self._id
42+
43+
@property
44+
def project_id(self):
45+
return self._project_id
46+
47+
@project_id.setter
48+
def project_id(self, value):
49+
if value is None:
50+
error = 'Project ID must be defined.'
51+
raise ValueError(error)
52+
else:
53+
self._project_id = value
5354

5455
@property
5556
def project_name(self):
@@ -60,30 +61,16 @@ def tags(self):
6061
return self._tags
6162

6263
@property
63-
def connections(self):
64-
if self._connections is None:
65-
error = 'Datasource item must be populated with connections first.'
66-
raise UnpopulatedPropertyError(error)
67-
return self._connections
64+
def type(self):
65+
return self._type
66+
67+
@property
68+
def updated_at(self):
69+
return self._updated_at
6870

6971
def _set_connections(self, connections):
7072
self._connections = connections
7173

72-
@classmethod
73-
def from_response(cls, resp):
74-
all_datasource_items = list()
75-
parsed_response = ET.fromstring(resp)
76-
all_datasource_xml = parsed_response.findall('.//t:datasource', namespaces=NAMESPACE)
77-
78-
for datasource_xml in all_datasource_xml:
79-
(id, name, type, content_url, created_at, updated_at,
80-
tags, project_id, project_name, owner_id) = cls._parse_element(datasource_xml)
81-
datasource_item = cls(project_id)
82-
datasource_item._set_values(id, name, type, content_url, created_at, updated_at,
83-
tags, None, project_name, owner_id)
84-
all_datasource_items.append(datasource_item)
85-
return all_datasource_items
86-
8774
def _parse_common_tags(self, datasource_xml):
8875
if not isinstance(datasource_xml, ET.Element):
8976
datasource_xml = ET.fromstring(datasource_xml).find('.//t:datasource', namespaces=NAMESPACE)
@@ -115,6 +102,21 @@ def _set_values(self, id, name, type, content_url, created_at,
115102
if owner_id:
116103
self.owner_id = owner_id
117104

105+
@classmethod
106+
def from_response(cls, resp):
107+
all_datasource_items = list()
108+
parsed_response = ET.fromstring(resp)
109+
all_datasource_xml = parsed_response.findall('.//t:datasource', namespaces=NAMESPACE)
110+
111+
for datasource_xml in all_datasource_xml:
112+
(id, name, type, content_url, created_at, updated_at,
113+
tags, project_id, project_name, owner_id) = cls._parse_element(datasource_xml)
114+
datasource_item = cls(project_id)
115+
datasource_item._set_values(id, name, type, content_url, created_at, updated_at,
116+
tags, None, project_name, owner_id)
117+
all_datasource_items.append(datasource_item)
118+
return all_datasource_items
119+
118120
@staticmethod
119121
def _parse_element(datasource_xml):
120122
id = datasource_xml.get('id', None)
@@ -141,4 +143,4 @@ def _parse_element(datasource_xml):
141143
if owner_elem is not None:
142144
owner_id = owner_elem.get('id', None)
143145

144-
return id, name, type, content_url, created_at, updated_at, tags, project_id, project_name, owner_id
146+
return id, name, type, content_url, created_at, updated_at, tags, project_id, project_name, owner_id

tableauserverapi/models/fileupload_item.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44

55
class FileuploadItem(object):
66
def __init__(self):
7-
self._upload_session_id = None
87
self._file_size = None
8+
self._upload_session_id = None
99

1010
@property
1111
def upload_session_id(self):

tableauserverapi/models/group_item.py

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,22 @@
55

66
class GroupItem(object):
77
def __init__(self, name):
8-
self._id = None
98
self._domain_name = None
10-
self._users = None
9+
self._id = None
1110
self._name = None
11+
self._users = None
12+
13+
# Invoke setter
1214
self.name = name
1315

16+
@property
17+
def domain_name(self):
18+
return self._domain_name
19+
20+
@property
21+
def id(self):
22+
return self._id
23+
1424
@property
1525
def name(self):
1626
return self._name
@@ -23,14 +33,6 @@ def name(self, value):
2333
else:
2434
self._name = value
2535

26-
@property
27-
def id(self):
28-
return self._id
29-
30-
@property
31-
def domain_name(self):
32-
return self._domain_name
33-
3436
@property
3537
def users(self):
3638
if self._users is None:

tableauserverapi/models/pagination_item.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,6 @@ def __init__(self):
88
self._page_size = None
99
self._total_available = None
1010

11-
@property
12-
def total_available(self):
13-
return self._total_available
14-
1511
@property
1612
def page_number(self):
1713
return self._page_number
@@ -20,6 +16,10 @@ def page_number(self):
2016
def page_size(self):
2117
return self._page_size
2218

19+
@property
20+
def total_available(self):
21+
return self._total_available
22+
2323
@classmethod
2424
def from_response(cls, resp):
2525
parsed_response = ET.fromstring(resp)

tableauserverapi/models/project_item.py

Lines changed: 29 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -8,32 +8,19 @@ class ContentPermissions:
88
ManagedByOwner = 'ManagedByOwner'
99

1010
def __init__(self, name, description=None, content_permissions=None):
11-
self._id = None
1211
self._content_permissions = None
12+
self._id = None
1313
self._name = None
1414
self.description = description
15+
16+
# Invoke setter
1517
self.name = name
1618

1719
if content_permissions:
1820
# In order to invoke the setter method to validate content_permissions,
1921
# _content_permissions must be initialized first.
2022
self.content_permissions = content_permissions
2123

22-
def is_default(self):
23-
return self.name.lower() == 'default'
24-
25-
@property
26-
def name(self):
27-
return self._name
28-
29-
@name.setter
30-
def name(self, value):
31-
if not value:
32-
error = 'Name must be defined.'
33-
raise ValueError(error)
34-
else:
35-
self._name = value
36-
3724
@property
3825
def content_permissions(self):
3926
return self._content_permissions
@@ -50,18 +37,20 @@ def content_permissions(self, value):
5037
def id(self):
5138
return self._id
5239

53-
@classmethod
54-
def from_response(cls, resp):
55-
all_project_items = list()
56-
parsed_response = ET.fromstring(resp)
57-
all_project_xml = parsed_response.findall('.//t:project', namespaces=NAMESPACE)
40+
@property
41+
def name(self):
42+
return self._name
5843

59-
for project_xml in all_project_xml:
60-
(id, name, description, content_permissions) = cls._parse_element(project_xml)
61-
project_item = cls(name)
62-
project_item._set_values(id, name, description, content_permissions)
63-
all_project_items.append(project_item)
64-
return all_project_items
44+
@name.setter
45+
def name(self, value):
46+
if not value:
47+
error = 'Name must be defined.'
48+
raise ValueError(error)
49+
else:
50+
self._name = value
51+
52+
def is_default(self):
53+
return self.name.lower() == 'default'
6554

6655
def _parse_common_tags(self, project_xml):
6756
if not isinstance(project_xml, ET.Element):
@@ -82,6 +71,19 @@ def _set_values(self, project_id, name, description, content_permissions):
8271
if content_permissions:
8372
self._content_permissions = content_permissions
8473

74+
@classmethod
75+
def from_response(cls, resp):
76+
all_project_items = list()
77+
parsed_response = ET.fromstring(resp)
78+
all_project_xml = parsed_response.findall('.//t:project', namespaces=NAMESPACE)
79+
80+
for project_xml in all_project_xml:
81+
(id, name, description, content_permissions) = cls._parse_element(project_xml)
82+
project_item = cls(name)
83+
project_item._set_values(id, name, description, content_permissions)
84+
all_project_items.append(project_item)
85+
return all_project_items
86+
8587
@staticmethod
8688
def _parse_element(project_xml):
8789
id = project_xml.get('id', None)

0 commit comments

Comments
 (0)
0