Skip to content

Commit 5c68266

Browse files
committed
Rename Favorite FavoriteItem and encapsulate
1 parent 4ebe3ae commit 5c68266

File tree

4 files changed

+45
-43
lines changed

4 files changed

+45
-43
lines changed

tableauserverclient/models/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from .datasource_item import DatasourceItem
66
from .database_item import DatabaseItem
77
from .exceptions import UnpopulatedPropertyError
8-
from .favorites_item import Favorite, get_favorites
8+
from .favorites_item import FavoriteItem
99
from .group_item import GroupItem
1010
from .flow_item import FlowItem
1111
from .interval_item import IntervalItem, DailyInterval, WeeklyInterval, MonthlyInterval, HourlyInterval

tableauserverclient/models/favorites_item.py

Lines changed: 36 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -8,41 +8,42 @@
88
logger = logging.getLogger('tableau.models.favorites_item')
99

1010

11-
class Favorite:
12-
Workbook = 'workbook'
13-
Datasource = 'datasource'
14-
View = 'view'
15-
Project = 'project'
11+
class FavoriteItem:
12+
class Type:
13+
Workbook = 'workbook'
14+
Datasource = 'datasource'
15+
View = 'view'
16+
Project = 'project'
1617

18+
@classmethod
19+
def from_response(cls, xml, namespace):
20+
favorites = {
21+
'datasources': [],
22+
'projects': [],
23+
'views': [],
24+
'workbooks': [],
25+
}
1726

18-
def get_favorites(server_response, namespace):
19-
favorites = {
20-
'datasources': [],
21-
'projects': [],
22-
'views': [],
23-
'workbooks': [],
24-
}
27+
parsed_response = ET.fromstring(xml)
28+
for workbook in parsed_response.findall('.//t:favorite/t:workbook', namespace):
29+
fav_workbook = WorkbookItem('')
30+
fav_workbook._set_values(*fav_workbook._parse_element(workbook, namespace))
31+
if fav_workbook:
32+
favorites['workbooks'].append(fav_workbook)
33+
for view in parsed_response.findall('.//t:favorite[t:view]', namespace):
34+
fav_views = ViewItem.from_xml_element(view, namespace)
35+
if fav_views:
36+
for fav_view in fav_views:
37+
favorites['views'].append(fav_view)
38+
for datasource in parsed_response.findall('.//t:favorite/t:datasource', namespace):
39+
fav_datasource = DatasourceItem('')
40+
fav_datasource._set_values(*fav_datasource._parse_element(datasource, namespace))
41+
if fav_datasource:
42+
favorites['datasources'].append(fav_datasource)
43+
for project in parsed_response.findall('.//t:favorite/t:project', namespace):
44+
fav_project = ProjectItem('p')
45+
fav_project._set_values(*fav_project._parse_element(project))
46+
if fav_project:
47+
favorites['projects'].append(fav_project)
2548

26-
parsed_response = ET.fromstring(server_response.content)
27-
for workbook in parsed_response.findall('.//t:favorite/t:workbook', namespace):
28-
fav_workbook = WorkbookItem('')
29-
fav_workbook._set_values(*fav_workbook._parse_element(workbook, namespace))
30-
if fav_workbook:
31-
favorites['workbooks'].append(fav_workbook)
32-
for view in parsed_response.findall('.//t:favorite[t:view]', namespace):
33-
fav_views = ViewItem.from_xml_element(view, namespace)
34-
if fav_views:
35-
for fav_view in fav_views:
36-
favorites['views'].append(fav_view)
37-
for datasource in parsed_response.findall('.//t:favorite/t:datasource', namespace):
38-
fav_datasource = DatasourceItem('')
39-
fav_datasource._set_values(*fav_datasource._parse_element(datasource, namespace))
40-
if fav_datasource:
41-
favorites['datasources'].append(fav_datasource)
42-
for project in parsed_response.findall('.//t:favorite/t:project', namespace):
43-
fav_project = ProjectItem('p')
44-
fav_project._set_values(*fav_project._parse_element(project))
45-
if fav_project:
46-
favorites['projects'].append(fav_project)
47-
48-
return favorites
49+
return favorites

tableauserverclient/server/endpoint/favorites_endpoint.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from .endpoint import Endpoint, api
22
from .exceptions import MissingRequiredFieldError
33
from .. import RequestFactory
4-
from ...models import get_favorites
4+
from ...models import FavoriteItem
55
from ..pager import Pager
66
import xml.etree.ElementTree as ET
77
import logging
@@ -22,7 +22,8 @@ def get(self, user_item, req_options=None):
2222
url = '{0}/{1}'.format(self.baseurl, user_item.id)
2323
server_response = self.get_request(url, req_options)
2424

25-
user_item._favorites = get_favorites(server_response, self.parent_srv.namespace)
25+
user_item._favorites = FavoriteItem.from_response(server_response.content,
26+
self.parent_srv.namespace)
2627

2728
@api(version="2.0")
2829
def add_favorite_workbook(self, user_item, workbook_item):

tableauserverclient/server/request_factory.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from requests.packages.urllib3.fields import RequestField
44
from requests.packages.urllib3.filepost import encode_multipart_formdata
55

6-
from ..models import TaskItem, UserItem, GroupItem, PermissionsRule, Favorite
6+
from ..models import TaskItem, UserItem, GroupItem, PermissionsRule, FavoriteItem
77

88

99
def _add_multipart(parts):
@@ -165,16 +165,16 @@ def _add_to_req(self, id_, target_type, label):
165165
return ET.tostring(xml_request)
166166

167167
def add_datasource_req(self, id_, name):
168-
return self._add_to_req(id_, Favorite.Datasource, name)
168+
return self._add_to_req(id_, FavoriteItem.Type.Datasource, name)
169169

170170
def add_project_req(self, id_, name):
171-
return self._add_to_req(id_, Favorite.Project, name)
171+
return self._add_to_req(id_, FavoriteItem.Type.Project, name)
172172

173173
def add_view_req(self, id_, name):
174-
return self._add_to_req(id_, Favorite.View, name)
174+
return self._add_to_req(id_, FavoriteItem.Type.View, name)
175175

176176
def add_workbook_req(self, id_, name):
177-
return self._add_to_req(id_, Favorite.Workbook, name)
177+
return self._add_to_req(id_, FavoriteItem.Type.Workbook, name)
178178

179179

180180
class FileuploadRequest(object):

0 commit comments

Comments
 (0)