8000 chore: type hint default permissions endpoints (#1493) · TrimPeachu/server-client-python@9f59af1 · GitHub
[go: up one dir, main page]

Skip to content

Commit 9f59af1

Browse files
authored
chore: type hint default permissions endpoints (tableau#1493)
Resource is not currently an actual type, but an enum-like holder for literal values. Added a Union for str types to make mypy happy. Co-authored-by: Jordan Woods <13803242+jorwoods@users.noreply.github.com>
1 parent d880d52 commit 9f59af1

File tree

3 files changed

+51
-34
lines changed

3 files changed

+51
-34
lines changed

tableauserverclient/models/tableau_types.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class Resource:
2828
TableauItem = Union[DatasourceItem, FlowItem, MetricItem, ProjectItem, ViewItem, WorkbookItem, VirtualConnectionItem]
2929

3030

31-
def plural_type(content_type: Resource) -> str:
31+
def plural_type(content_type: Union[Resource, str]) -> str:
3232
if content_type == Resource.Lens:
3333
return "lenses"
3434
else:

tableauserverclient/server/endpoint/default_permissions_endpoint.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ def __str__(self):
3939
__repr__ = __str__
4040

4141
def update_default_permissions(
42-
self, resource: BaseItem, permissions: Sequence[PermissionsRule], content_type: Resource
42+
self, resource: BaseItem, permissions: Sequence[PermissionsRule], content_type: Union[Resource, str]
4343
) -> list[PermissionsRule]:
4444
url = f"{self.owner_baseurl()}/{resource.id}/default-permissions/{plural_type(content_type)}"
4545
update_req = RequestFactory.Permission.add_req(permissions)
@@ -50,7 +50,9 @@ def update_default_permissions(
5050

5151
return permissions
5252

53-
def delete_default_permission(self, resource: BaseItem, rule: PermissionsRule, content_type: Resource) -> None:
53+
def delete_default_permission(
54+
self, resource: BaseItem, rule: PermissionsRule, content_type: Union[Resource, str]
55+
) -> None:
5456
for capability, mode in rule.capabilities.items():
5557
# Made readability better but line is too long, will make this look better
5658
url = (
@@ -72,7 +74,7 @@ def delete_default_permission(self, resource: BaseItem, rule: PermissionsRule, c
7274

7375
logger.info(f"Deleted permission for {rule.grantee.tag_name} {rule.grantee.id} item {resource.id}")
7476

75-
def populate_default_permissions(self, item: BaseItem, content_type: Resource) -> None:
77+
def populate_default_permissions(self, item: BaseItem, content_type: Union[Resource, str]) -> None:
7678
if not item.id:
7779
error = "Server item is missing ID. Item must be retrieved from server first."
7880
raise MissingRequiredFieldError(error)
@@ -84,7 +86,7 @@ def permission_fetcher() -> list[PermissionsRule]:
8486
logger.info(f"Populated default {content_type} permissions for item (ID: {item.id})")
8587

8688
def _get_default_permissions(
87-
self, item: BaseItem, content_type: Resource, req_options: Optional["RequestOptions"] = None
89+
self, item: BaseItem, content_type: Union[Resource, str], req_options: Optional["RequestOptions"] = None
8890
) -> list[PermissionsRule]:
8991
url = f"{self.owner_baseurl()}/{item.id}/default-permissions/{plural_type(content_type)}"
9092
server_response = self.get_request(url, req_options)

tableauserverclient/server/endpoint/projects_endpoint.py

Lines changed: 44 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from tableauserverclient.< 6D40 span class=pl-s1>server.endpoint.exceptions import MissingRequiredFieldError
66
from tableauserverclient.server.endpoint.permissions_endpoint import _PermissionsEndpoint
77
from tableauserverclient.server import RequestFactory, RequestOptions
8+
from tableauserverclient.models.permissions_item import PermissionsRule
89
from tableauserverclient.models import ProjectItem, PaginationItem, Resource
910

1011
from typing import Optional, TYPE_CHECKING
@@ -78,119 +79,133 @@ def populate_permissions(self, item: ProjectItem) -> None:
7879
self._permissions.populate(item)
7980

8081
@api(version="2.0")
81-
def update_permissions(self, item, rules):
82+
def update_permissions(self, item: ProjectItem, rules: list[PermissionsRule]) -> list[PermissionsRule]:
8283
return self._permissions.update(item, rules)
8384

8485
@api(version="2.0")
85-
def delete_permission(self, item, rules):
86+
def delete_permission(self, item: ProjectItem, rules: list[PermissionsRule]) -> None:
8687
self._permissions.delete(item, rules)
8788

8889
@api(version="2.1")
89-
def populate_workbook_default_permissions(self, item):
90+
def populate_workbook_default_permissions(self, item: ProjectItem) -> None:
9091
self._default_permissions.populate_default_permissions(item, Resource.Workbook)
9192

9293
@api(version="2.1")
93-
def populate_datasource_default_permissions(self, item):
94+
def populate_datasource_default_permissions(self, item: ProjectItem) -> None:
9495
self._default_permissions.populate_default_permissions(item, Resource.Datasource)
9596

9697
@api(version="3.2")
97-
def populate_metric_default_permissions(self, item):
98+
def populate_metric_default_permissions(self, item: ProjectItem) -> None:
9899
self._default_permissions.populate_default_permissions(item, Resource.Metric)
99100

100101
@api(version="3.4")
101-
def populate_datarole_default_permissions(self, item):
102+
def populate_datarole_default_permissions(self, item: ProjectItem) -> None:
102103
self._default_permissions.populate_default_permissions(item, Resource.Datarole)
103104

104105
@api(version="3.4")
105-
def populate_flow_default_permissions(self, item):
106+
def populate_flow_default_permissions(self, item: ProjectItem) -> None:
106107
self._default_permissions.populate_default_permissions(item, Resource.Flow)
107108

108109
@api(version="3.4")
109-
def populate_lens_default_permissions(self, item):
110+
def populate_lens_default_permissions(self, item: ProjectItem) -> None:
110111
self._default_permissions.populate_default_permissions(item, Resource.Lens)
111112

112113
@api(version="3.23")
113-
def populate_virtualconnection_default_permissions(self, item):
114+
def populate_virtualconnection_default_permissions(self, item: ProjectItem) -> None:
114115
self._default_permissions.populate_default_permissions(item, Resource.VirtualConnection)
115116

116117
@api(version="3.23")
117-
def populate_database_default_permissions(self, item):
118+
def populate_database_default_permissions(self, item: ProjectItem) -> None:
118119
self._default_permissions.populate_default_permissions(item, Resource.Database)
119120

120121
@api(version="3.23")
121-
def populate_table_default_permissions(self, item):
122+
def populate_table_default_permissions(self, item: ProjectItem) -> None:
122123
self._default_permissions.populate_default_permissions(item, Resource.Table)
123124

124125
@api(version="2.1")
125-
def update_workbook_default_permissions(self, item, rules):
126+
def update_workbook_default_permissions(
127+
self, item: ProjectItem, rules: list[PermissionsRule]
128+
) -> list[PermissionsRule]:
126129
return self._default_permissions.update_default_permissions(item, rules, Resource.Workbook)
127130

128131
@api(version="2.1")
129-
def update_datasource_default_permissions(self, item, rules):
132+
def update_datasource_default_permissions(
133+
self, item: ProjectItem, rules: list[PermissionsRule]
134+
) -> list[PermissionsRule]:
130135
return self._default_permissions.update_default_permissions(item, rules, Resource.Datasource)
131136

132137
@api(version="3.2")
133-
def update_metric_default_permissions(self, item, rules):
138+
def update_metric_default_permissions(
139+
self, item: ProjectItem, rules: list[PermissionsRule]
140+
) -> list[PermissionsRule]:
134141
return self._default_permissions.update_default_permissions(item, rules, Resource.Metric)
135142

136143
@api(version="3.4")
137-
def update_datarole_default_permissions(self, item, rules):
144+
def update_datarole_default_permissions(
145+
self, item: ProjectItem, rules: list[PermissionsRule]
146+
) -> list[PermissionsRule]:
138147
return self._default_permissions.update_default_permissions(item, rules, Resource.Datarole)
139148

140149
@api(version="3.4")
141-
def update_flow_default_permissions(self, item, rules):
150+
def update_flow_default_permissions(self, item: ProjectItem, rules: list[PermissionsRule]) -> list[PermissionsRule]:
142151
return self._default_permissions.update_default_permissions(item, rules, Resource.Flow)
143152

144153
@api(version="3.4")
145-
def update_lens_default_permissions(self, item, rules):
154+
def update_lens_default_permissions(self, item: ProjectItem, rules: list[PermissionsRule]) -> list[PermissionsRule]:
146155
return self._default_permissions.update_default_permissions(item, rules, Resource.Lens)
147156

148157
@api(version="3.23")
149-
def update_virtualconnection_default_permissions(self, item, rules):
158+
def update_virtualconnection_default_permissions(
159+
self, item: ProjectItem, rules: list[PermissionsRule]
160+
) -> list[PermissionsRule]:
150161
return self._default_permissions.update_default_permissions(item, rules, Resource.VirtualConnection)
151162

152163
@api(version="3.23")
153-
def update_database_default_permissions(self, item, rules):
164+
def update_database_default_permissions(
165+
self, item: ProjectItem, rules: list[PermissionsRule]
166+
) -> list[PermissionsRule]:
154167
return self._default_permissions.update_default_permissions(item, rules, Resource.Database)
155168

156169
@api(version="3.23")
157-
def update_table_default_permissions(self, item, rules):
170+
def update_table_default_permissions(
171+
self, item: ProjectItem, rules: list[PermissionsRule]
172+
) -> list[PermissionsRule]:
158173
return self._default_permissions.update_default_permissions(item, rules, Resource.Table)
159174

160175
@api(version="2.1")
161-
def delete_workbook_default_permissions(self, item, rule):
176+
def delete_workbook_default_permissions(self, item: ProjectItem, rule: PermissionsRule) -> None:
162177
self._default_permissions.delete_default_permission(item, rule, Resource.Workbook)
163178

164179
@api(version="2.1")
165-
def delete_datasource_default_permissions(self, item, rule):
180+
def delete_datasource_default_permissions(self, item: ProjectIt 558 em, rule: PermissionsRule) -> None:
166181
self._default_permissions.delete_default_permission(item, rule, Resource.Datasource)
167182

168183
@api(version="3.2")
169-
def delete_metric_default_permissions(self, item, rule):
184+
def delete_metric_default_permissions(self, item: ProjectItem, rule: PermissionsRule) -> None:
170185
self._default_permissions.delete_default_permission(item, rule, Resource.Metric)
171186

172187
@api(version="3.4")
173-
def delete_datarole_default_permissions(self, item, rule):
188+
def delete_datarole_default_permissions(self, item: ProjectItem, rule: PermissionsRule) -> None:
174189
self._default_permissions.delete_default_permission(item, rule, Resource.Datarole)
175190

176191
@api(version="3.4")
177-
def delete_flow_default_permissions(self, item, rule):
192+
def delete_flow_default_permissions(self, item: ProjectItem, rule: PermissionsRule) -> None:
178193
self._default_permissions.delete_default_permission(item, rule, Resource.Flow)
179194

180195
@api(version="3.4")
181-
def delete_lens_default_permissions(self, item, rule):
196+
def delete_lens_default_permissions(self, item: ProjectItem, rule: PermissionsRule) -> None:
182197
self._default_permissions.delete_default_permission(item, rule, Resource.Lens)
183198

184199
@api(version="3.23")
185-
def delete_virtualconnection_default_permissions(self, item, rule):
200+
def delete_virtualconnection_default_permissions(self, item: ProjectItem, rule: PermissionsRule) -> None:
186201
self._default_permissions.delete_default_permission(item, rule, Resource.VirtualConnection)
187202

188203
@api(version="3.23")
189-
def delete_database_default_permissions(self, item, rule):
204+
def delete_database_default_permissions(self, item: ProjectItem, rule: PermissionsRule) -> None:
190205
self._default_permissions.delete_default_permission(item, rule, Resource.Database)
191206

192207
@api(version="3.23")
193-
def delete_table_default_permissions(self, item, rule):
208+
def delete_table_default_permissions(self, item: ProjectItem, rule: PermissionsRule) -> None:
194209
self._default_permissions.delete_default_permission(item, rule, Resource.Table)
195210

196211
def filter(self, *invalid, page_size: Optional[int] = None, **kwargs) -> QuerySet[ProjectItem]:

0 commit comments

Comments
 (0)
0