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