|
| 1 | +from .endpoint import Endpoint, api |
| 2 | +from .exceptions import MissingRequiredFieldError |
| 3 | +from .. import RequestFactory |
| 4 | +from ...models import FavoriteItem |
| 5 | +from ..pager import Pager |
| 6 | +import xml.etree.ElementTree as ET |
| 7 | +import logging |
| 8 | +import copy |
| 9 | + |
| 10 | +logger = logging.getLogger('tableau.endpoint.favorites') |
| 11 | + |
| 12 | + |
| 13 | +class Favorites(Endpoint): |
| 14 | + @property |
| 15 | + def baseurl(self): |
| 16 | + return "{0}/sites/{1}/favorites".format(self.parent_srv.baseurl, self.parent_srv.site_id) |
| 17 | + |
| 18 | + # Gets all favorites |
| 19 | + @api(version="2.5") |
| 20 | + def get(self, user_item, req_options=None): |
| 21 | + logger.info('Querying all favorites for user {0}'.format(user_item.name)) |
| 22 | + url = '{0}/{1}'.format(self.baseurl, user_item.id) |
| 23 | + server_response = self.get_request(url, req_options) |
| 24 | + |
| 25 | + user_item._favorites = FavoriteItem.from_response(server_response.content, |
| 26 | + self.parent_srv.namespace) |
| 27 | + |
| 28 | + @api(version="2.0") |
| 29 | + def add_favorite_workbook(self, user_item, workbook_item): |
| 30 | + url = '{0}/{1}'.format(self.baseurl, user_item.id) |
| 31 | + add_req = RequestFactory.Favorite.add_workbook_req(workbook_item.id, workbook_item.name) |
| 32 | + server_response = self.put_request(url, add_req) |
| 33 | + logger.info('Favorited {0} for user (ID: {1})'.format(workbook_item.name, user_item.id)) |
| 34 | + |
| 35 | + @api(version="2.0") |
| 36 | + def add_favorite_view(self, user_item, view_item): |
| 37 | + url = '{0}/{1}'.format(self.baseurl, user_item.id) |
| 38 | + add_req = RequestFactory.Favorite.add_view_req(view_item.id, view_item.name) |
| 39 | + server_response = self.put_request(url, add_req) |
| 40 | + logger.info('Favorited {0} for user (ID: {1})'.format(view_item.name, user_item.id)) |
| 41 | + |
| 42 | + @api(version="2.3") |
| 43 | + def add_favorite_datasource(self, user_item, datasource_item): |
| 44 | + url = '{0}/{1}'.format(self.baseurl, user_item.id) |
| 45 | + add_req = RequestFactory.Favorite.add_datasource_req(datasource_item.id, datasource_item.name) |
| 46 | + server_response = self.put_request(url, add_req) |
| 47 | + logger.info('Favorited {0} for user (ID: {1})'.format(datasource_item.name, user_item.id)) |
| 48 | + |
| 49 | + @api(version="3.1") |
| 50 | + def add_favorite_project(self, user_item, project_item): |
| 51 | + url = '{0}/{1}'.format(self.baseurl, user_item.id) |
| 52 | + add_req = RequestFactory.Favorite.add_project_req(project_item.id, project_item.name) |
| 53 | + server_response = self.put_request(url, add_req) |
| 54 | + logger.info('Favorited {0} for user (ID: {1})'.format(project_item.name, user_item.id)) |
| 55 | + |
| 56 | + @api(version="2.0") |
| 57 | + def delete_favorite_workbook(self, user_item, workbook_item): |
| 58 | + url = '{0}/{1}/workbooks/{2}'.format(self.baseurl, user_item.id, workbook_item.id) |
| 59 | + logger.info('Removing favorite {0} for user (ID: {1})'.format(workbook_item.id, user_item.id)) |
| 60 | + self.delete_request(url) |
| 61 | + |
| 62 | + @api(version="2.0") |
| 63 | + def delete_favorite_view(self, user_item, view_item): |
| 64 | + url = '{0}/{1}/views/{2}'.format(self.baseurl, user_item.id, view_item.id) |
| 65 | + logger.info('Removing favorite {0} for user (ID: {1})'.format(view_item.id, user_item.id)) |
| 66 | + self.delete_request(url) |
| 67 | + |
| 68 | + @api(version="2.3") |
| 69 | + def delete_favorite_datasource(self, user_item, datasource_item): |
| 70 | + url = '{0}/{1}/datasources/{2}'.format(self.baseurl, user_item.id, datasource_item.id) |
| 71 | + logger.info('Removing favorite {0} for user (ID: {1})'.format(datasource_item.id, user_item.id)) |
| 72 | + self.delete_request(url) |
| 73 | + |
| 74 | + @api(version="3.1") |
| 75 | + def delete_favorite_project(self, user_item, project_item): |
| 76 | + url = '{0}/{1}/projects/{2}'.format(self.baseurl, user_item.id, project_item.id) |
| 77 | + logger.info('Removing favorite {0} for user (ID: {1})'.format(project_item.id, user_item.id)) |
| 78 | + self.delete_request(url) |
0 commit comments