Skip to content

Commit 535f579

Browse files
committed
Add Share/unshare the group with a group
1 parent 1606310 commit 535f579

File tree

2 files changed

+45
-0
lines changed

2 files changed

+45
-0
lines changed

docs/gl_objects/groups.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,11 @@ Remove a group::
7474
# or
7575
group.delete()
7676

77+
Share/unshare the group with a group::
78+
79+
group.share(group2.id, gitlab.DEVELOPER_ACCESS)
80+
group.unshare(group2.id)
81+
7782
Import / Export
7883
===============
7984

gitlab/v4/objects.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1467,6 +1467,46 @@ def ldap_sync(self, **kwargs):
14671467
path = "/groups/%s/ldap_sync" % self.get_id()
14681468
self.manager.gitlab.http_post(path, **kwargs)
14691469

1470+
@cli.register_custom_action(
1471+
"Group", ("group_id", "group_access"), ("expires_at",)
1472+
)
1473+
@exc.on_http_error(exc.GitlabCreateError)
1474+
def share(self, group_id, group_access, expires_at=None, **kwargs):
1475+
"""Share the group with a group.
1476+
1477+
Args:
1478+
group_id (int): ID of the group.
1479+
group_access (int): Access level for the group.
1480+
**kwargs: Extra options to send to the server (e.g. sudo)
1481+
1482+
Raises:
1483+
GitlabAuthenticationError: If authentication is not correct
1484+
GitlabCreateError: If the server failed to perform the request
1485+
"""
1486+
path = "/groups/%s/share" % self.get_id()
1487+
data = {
1488+
"group_id": group_id,
1489+
"group_access": group_access,
1490+
"expires_at": expires_at,
1491+
}
1492+
self.manager.gitlab.http_post(path, post_data=data, **kwargs)
1493+
1494+
@cli.register_custom_action("Group", ("group_id",))
1495+
@exc.on_http_error(exc.GitlabDeleteError)
1496+
def unshare(self, group_id, **kwargs):
1497+
"""Delete a shared group link within a group.
1498+
1499+
Args:
1500+
group_id (int): ID of the group.
1501+
**kwargs: Extra options to send to the server (e.g. sudo)
1502+
1503+
Raises:
1504+
GitlabAuthenticationError: If authentication is not correct
1505+
GitlabDeleteError: If the server failed to perform the request
1506+
"""
1507+
path = "/groups/%s/share/%s" % (self.get_id(), group_id)
1508+
self.manager.gitlab.http_delete(path, **kwargs)
1509+
14701510

14711511
class GroupManager(CRUDMixin, RESTManager):
14721512
_path = "/groups"

0 commit comments

Comments
 (0)