F987
9
9
10
10
logger = logging .getLogger ("tableau.endpoint.views" )
11
11
12
+ from typing import Iterable , List , Optional , Tuple , TYPE_CHECKING
13
+
14
+ if TYPE_CHECKING :
15
+ from ..request_options import RequestOptions , CSVRequestOptions , PDFRequestOptions , ImageRequestOptions
16
+
12
17
13
18
class Views (QuerysetEndpoint ):
14
19
def __init__ (self , parent_srv ):
@@ -18,15 +23,17 @@ def __init__(self, parent_srv):
18
23
19
24
# Used because populate_preview_image functionaliy requires workbook endpoint
20
25
@property
21
- def siteurl (self ):
26
+ def siteurl (self ) -> str :
22
27
return "{0}/sites/{1}" .format (self .parent_srv .baseurl , self .parent_srv .site_id )
23
28
24
29
@property
25
- def baseurl (self ):
30
+ def baseurl (self ) -> str :
26
31
return "{0}/views" .format (self .siteurl )
27
32
28
33
@api (version = "2.2" )
29
- def get (self , req_options = None , usage = False ):
34
+ def get (
35
+ self , req_options : Optional ["RequestOptions" ] = None , usage : bool = False
36
+ ) -> Tuple [List [ViewItem ], PaginationItem ]:
30
37
logger .info ("Querying all views on site" )
31
38
url = self .baseurl
32
39
if usage :
@@ -37,7 +44,7 @@ def get(self, req_options=None, usage=False):
37
44
return all_view_items , pagination_item
38
45
39
46
@api (version = "3.1" )
40
- def get_by_id (self , view_id ) :
47
+ def get_by_id (self , view_id : str ) -> ViewItem :
41
48
if not view_id :
42
49
error = "View item missing ID."
43
50
raise MissingRequiredFieldError (error )
@@ -47,7 +54,7 @@ def get_by_id(self, view_id):
47
54
return ViewItem .from_response (server_response .content , self .parent_srv .namespace )[0 ]
48
55
49
56
@api (version = "2.0" )
50
- def populate_preview_image (self , view_item ) :
57
+ def populate_preview_image (self , view_item : ViewItem ) -> None :
51
58
if not view_item .id or not view_item .workbook_id :
52
59
error = "View item missing ID or workbook ID."
53
60
raise MissingRequiredFieldError (error )
@@ -58,14 +65,14 @@ def image_fetcher():
58
65
view_item ._set_preview_image (image_fetcher )
59
66
logger .info ("Populated preview image for view (ID: {0})" .format (view_item .id ))
60
67
61
- def _get_preview_for_view (self , view_item ) :
68
+ def _get_preview_for_view (self , view_item : ViewItem ) -> bytes :
62
69
url = "{0}/workbooks/{1}/views/{2}/previewImage" .format (self .siteurl , view_item .workbook_id , view_item .id )
63
70
server_response = self .get_request (url )
64
71
image = server_response .content
65
72
return image
66
73
67
74
@api (version = "2.5" )
68
- def populate_image (self , view_item , req_options = None ):
75
+ def populate_image (self , view_item : ViewItem , req_options : Optional [ "ImageRequestOptions" ] = None ) -> None :
69
76
if not view_item .id :
70
77
error = "View item missing ID."
71
78
raise MissingRequiredFieldError (error )
@@ -76,14 +83,14 @@ def image_fetcher():
76
83
view_item ._set_image (image_fetcher )
77
84
logger .info ("Populated image for view (ID: {0})" .format (view_item .id ))
78
85
79
- def _get_view_image (self , view_item , req_options ) :
86
+ def _get_view_image (self , view_item : ViewItem , req_options : Optional [ "ImageRequestOptions" ]) -> bytes :
80
87
url = "{0}/{1}/image" .format (self .baseurl , view_item .id )
81
88
server_response = self .get_request (url , req_options )
82
89
image = server_response .content
83
90
return image
84
91
85
92
@api (version = "2.7" )
86
- def populate_pdf (self , view_item , req_options = None ):
93
+ def populate_pdf (self , view_item : ViewItem , req_options : Optional [ "PDFRequestOptions" ] = None ) -> None :
87
94
if not view_item .id :
88
95
error = "View item missing ID."
89
96
raise MissingRequiredFieldError (error )
@@ -94,14 +101,14 @@ def pdf_fetcher():
94
101
view_item ._set_pdf (pdf_fetcher )
95
102
logger .info ("Populated pdf for view (ID: {0})" .format (view_item .id ))
96
103
97
- def _get_view_pdf (self , view_item , req_options ) :
104
+ def _get_view_pdf (self , view_item : ViewItem , req_options : Optional [ "PDFRequestOpti
10000
ons" ]) -> bytes :
98
105
url = "{0}/{1}/pdf" .format (self .baseurl , view_item .id )
99
106
server_response = self .get_request (url , req_options )
100
107
pdf = server_response .content
101
108
return pdf
102
109
103
110
@api (version = "2.7" )
104
- def populate_csv (self , view_item , req_options = None ):
111
+ def populate_csv (self , view_item : ViewItem , req_options : Optional [ "CSVRequestOptions" ] = None ) -> None :
105
112
if not view_item .id :
106
113
error = "View item missing ID."
107
114
raise MissingRequiredFieldError (error )
@@ -112,15 +119,15 @@ def csv_fetcher():
112
119
view_item ._set_csv (csv_fetcher )
113
120
logger .info ("Populated csv for view (ID: {0})" .format (view_item .id ))
114
121
115
- def _get_view_csv (self , view_item , req_options ) :
122
+ def _get_view_csv (self , view_item : ViewItem , req_options : Optional [ "CSVRequestOptions" ]) -> Iterable [ bytes ] :
116
123
url = "{0}/{1}/data" .format (self .baseurl , view_item .id )
117
124
118
125
with closing (self .get_request (url , request_object = req_options , parameters = {"stream" : True })) as server_response :
119
126
csv = server_response .iter_content (1024 )
120
127
return csv
121
128
122
129
@api (version = "3.2" )
123
- def populate_permissions (self , item ) :
130
+ def populate_permissions (self , item : ViewItem ) -> None :
124
131
self ._permissions .populate (item )
125
132
126
133
@api (version = "3.2" )
@@ -132,7 +139,7 @@ def delete_permission(self, item, capability_item):
132
139
return self ._permissions .delete (item , capability_item )
133
140
134
141
# Update view. Currently only tags can be updated
135
- def update (self , view_item ) :
142
+ def update (self , view_item : ViewItem ) -> ViewItem :
136
143
if not view_item .id :
137
144
error = "View item missing ID. View must be retrieved from server first."
138
145
raise MissingRequiredFieldError (error )
0 commit comments