|
8 | 8 | logger = logging.getLogger('tableau.models.favorites_item') |
9 | 9 |
|
10 | 10 |
|
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' |
16 | 17 |
|
| 18 | + @classmethod |
| 19 | + def from_response(cls, xml, namespace): |
| 20 | + favorites = { |
| 21 | + 'datasources': [], |
| 22 | + 'projects': [], |
| 23 | + 'views': [], |
| 24 | + 'workbooks': [], |
| 25 | + } |
17 | 26 |
|
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) |
25 | 48 |
|
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 |
0 commit comments