8000 Type hint GroupRequest · tableau/server-client-python@5432500 · GitHub
[go: up one dir, main page]

Skip to content

Commit 5432500

Browse files
committed
Type hint GroupRequest
1 parent 8a342c2 commit 5432500

File tree

1 file changed

+23
-8
lines changed

1 file changed

+23
-8
lines changed

tableauserverclient/server/request_factory.py

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
from ..models import TaskItem, UserItem, GroupItem, PermissionsRule, FavoriteItem
77

8+
from typing import Optional, TYPE_CHECKING
9+
810

911
def _add_multipart(parts):
1012
mime_multipart_parts = list()
@@ -312,24 +314,30 @@ def publish_req_chunked(self, flow_item, connections=None):
312314

313315

314316
class GroupRequest(object):
315-
def add_user_req(self, user_id):
317+
def add_user_req(self, user_id: str) -> bytes:
316318
xml_request = ET.Element("tsRequest")
317319
user_element = ET.SubElement(xml_request, "user")
318320
user_element.attrib["id"] = user_id
319321
return ET.tostring(xml_request)
320322

321-
def create_local_req(self, group_item):
323+
def create_local_req(self, group_item: GroupItem) -> bytes:
322324
xml_request = ET.Element("tsRequest")
323325
group_element = ET.SubElement(xml_request, "group")
324-
group_element.attrib["name"] = group_item.name
326+
if group_item.name is not None:
327+
group_element.attrib["name"] = group_item.name
328+
else:
329+
raise ValueError("Group name must be populated")
325330
if group_item.minimum_site_role is not None:
326331
group_element.attrib["minimumSiteRole"] = group_item.minimum_site_role
327332
return ET.tostring(xml_request)
328333

329-
def create_ad_req(self, group_item):
334+
def create_ad_req(self, group_item: GroupItem) -> bytes:
330335
xml_request = ET.Element("tsRequest")
331336
group_element = ET.SubElement(xml_request, "group")
332-
group_element.attrib["name"] = group_item.name
337+
if group_item.name is not None:
338+
group_element.attrib["name"] = group_item.name
339+
else:
340+
raise ValueError("Group name must be populated")
333341
import_element = ET.SubElement(group_element, "import")
334342
import_element.attrib["source"] = "ActiveDirectory"
335343
if group_item.domain_name is None:
@@ -343,7 +351,7 @@ def create_ad_req(self, group_item):
343351
import_element.attrib["siteRole"] = group_item.minimum_site_role
344352
return ET.tostring(xml_request)
345353

346-
def update_req(self, group_item, default_site_role=None):
354+
def update_req(self, group_item: GroupItem, default_site_role: Optional[str] = None) -> bytes:
347355
# (1/8/2021): Deprecated starting v0.15
348356
if default_site_role is not None:
349357
import warnings
@@ -358,13 +366,20 @@ def update_req(self, group_item, default_site_role=None):
358366

359367
xml_request = ET.Element("tsRequest")
360368
group_element = ET.SubElement(xml_request, "group")
361-
group_element.attrib["name"] = group_item.name
369+
370+
if group_item.name is not None:
371+
group_element.attrib["name"] = group_item.name
372+
else:
373+
raise ValueError("Group name must be populated")
362374
if group_item.domain_name is not None and group_item.domain_name != "local":
363375
# Import element is only accepted in the request for AD groups
364376
import_element = ET.SubElement(group_element, "import")
365377
import_element.attrib["source"] = "ActiveDirectory"
366378
import_element.attrib["domainName"] = group_item.domain_name
367-
import_element.attrib["siteRole"] = group_item.minimum_site_role
379+
if isinstance(group_item.minimum_site_role, str):
380+
import_element.attrib["siteRole"] = group_item.minimum_site_role
381+
else:
382+
raise ValueError("Minimum site role must be provided.")
368383
if group_item.license_mode is not None:
369384
import_element.attrib["grantLicenseMode"] = group_item.license_mode
370385
else:

0 commit comments

Comments
 (0)
0