8000 feat: add as_reference method to groupset · tableau/server-client-python@60e6b9c · GitHub
[go: up one dir, main page]

Skip to content

Commit 60e6b9c

Browse files
jorwoodsjacalata
authored andcommitted
feat: add as_reference method to groupset
1 parent fad98bd commit 60e6b9c

File tree

5 files changed

+39
-5
lines changed

5 8000 files changed

+39
-5
lines changed

tableauserverclient/models/groupset_item.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from defusedxml.ElementTree import fromstring
55

66
from tableauserverclient.models.group_item import GroupItem
7+
from tableauserverclient.models.reference_item import ResourceReference
78

89

910
class GroupSetItem:
@@ -46,3 +47,7 @@ def get_group(group_xml: ET.Element) -> GroupItem:
4647
]
4748

4849
return group_set_item
50+
51+
@staticmethod
52+
def as_reference(id_: str) -> ResourceReference:
53+
return ResourceReference(id_, GroupSetItem.tag_name)

tableauserverclient/models/permissions_item.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@
33

44
from defusedxml.ElementTree import fromstring
55

6-
from .exceptions import UnknownGranteeTypeError, UnpopulatedPropertyError
7-
from .group_item import GroupItem
8-
from .reference_item import ResourceReference
9-
from .user_item import UserItem
6+
from tableauserverclient.models.exceptions import UnknownGranteeTypeError, UnpopulatedPropertyError
7+
from tableauserverclient.models.group_item import GroupItem
8+
from tableauserverclient.models.groupset_item import GroupSetItem
9+
from tableauserverclient.models.reference_item import ResourceReference
10+
from tableauserverclient.models.user_item import UserItem
1011

1112
from tableauserverclient.helpers.logging import logger
1213

@@ -142,6 +143,8 @@ def _parse_grantee_element(grantee_capability_xml: ET.Element, ns: Optional[Dict
142143
grantee = UserItem.as_reference(grantee_id)
143144
elif grantee_type == "group":
144145
grantee = GroupItem.as_reference(grantee_id)
146+
elif grantee_type == "groupSet":
147+
grantee = GroupSetItem.as_reference(grantee_id)
145148
else:
146149
raise UnknownGranteeTypeError("No support for grantee type of {}".format(grantee_type))
147150

test/assets/flow_populate_permissions.xml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,12 @@
1111
<capability name="Read" mode="Allow"/>
1212
</capabilities>
1313
</granteeCapabilities>
14+
<granteeCapabilities>
15+
<groupSet id="7ea95a1b-6872-44d6-a969-68598a7df4a0"/>
16+
<capabilities>
17+
<capability name="Write" mode="Allow"/>
18+
<capability name="Read" mode="Allow"/>
19+
</capabilities>
20+
</granteeCapabilities>
1421
</permissions>
15-
</tsResponse>
22+
</tsResponse>

test/test_flow.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,16 @@ def test_populate_permissions(self) -> None:
142142
},
143143
)
144144

145+
self.assertEqual(permissions[1].grantee.tag_name, "groupSet")
146+
self.assertEqual(permissions[1].grantee.id, "7ea95a1b-6872-44d6-a969-68598a7df4a0")
147+
self.assertDictEqual(
148+
permissions[1].capabilities,
149+
{
150+
TSC.Permission.Capability.Write: TSC.Permission.Mode.Allow,
151+
TSC.Permission.Capability.Read: TSC.Permission.Mode.Allow,
152+
},
153+
)
154+
145155
def test_publish(self) -> None:
146156
with open(PUBLISH_XML, "rb") as f:
147157
response_xml = f.read().decode("utf-8")

test/test_groupsets.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import requests_mock
66

77
import tableauserverclient as TSC
8+
from tableauserverclient.models.reference_item import ResourceReference
89

910
TEST_ASSET_DIR = Path(__file__).parent / "assets"
1011
GROUPSET_CREATE = TEST_ASSET_DIR / "groupsets_create.xml"
@@ -128,3 +129,11 @@ def test_remove_group(self) -> None:
128129
assert len(history) == 1
129130
assert history[0].method == "DELETE"
130131
assert history[0].url == f"{self.baseurl}/{groupset.id}/groups/{group._id}"
132+
133+
def test_as_reference(self) -> None:
134+
groupset = TSC.GroupSetItem()
135+
groupset.id = "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d"
136+
ref = groupset.as_reference(groupset.id)
137+
assert ref.id == groupset.id
138+
assert ref.tag_name == groupset.tag_name
139+
assert isinstance(ref, ResourceReference)

0 commit comments

Comments
 (0)
0