diff options
author | Mathieu Parent <math.parent@gmail.com> | 2020-07-23 09:59:50 +0200 |
---|---|---|
committer | Mathieu Parent <math.parent@gmail.com> | 2020-07-23 16:05:00 +0200 |
commit | 7c6e541dc2642740a6ec2d7ed7921aca41446b37 (patch) | |
tree | 70fda55d4989717841ebe789692a2c252a248b94 /gitlab/v4/objects.py | |
parent | 1606310a880f8a8a2a370db27511b57732caf178 (diff) | |
download | gitlab-7c6e541dc2642740a6ec2d7ed7921aca41446b37.tar.gz |
feat: add share/unshare group with group
Diffstat (limited to 'gitlab/v4/objects.py')
-rw-r--r-- | gitlab/v4/objects.py | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/gitlab/v4/objects.py b/gitlab/v4/objects.py index 6b47e08..2f3e8a5 100644 --- a/gitlab/v4/objects.py +++ b/gitlab/v4/objects.py @@ -1467,6 +1467,44 @@ class Group(SaveMixin, ObjectDeleteMixin, RESTObject): path = "/groups/%s/ldap_sync" % self.get_id() self.manager.gitlab.http_post(path, **kwargs) + @cli.register_custom_action("Group", ("group_id", "group_access"), ("expires_at",)) + @exc.on_http_error(exc.GitlabCreateError) + def share(self, group_id, group_access, expires_at=None, **kwargs): + """Share the group with a group. + + Args: + group_id (int): ID of the group. + group_access (int): Access level for the group. + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabCreateError: If the server failed to perform the request + """ + path = "/groups/%s/share" % self.get_id() + data = { + "group_id": group_id, + "group_access": group_access, + "expires_at": expires_at, + } + self.manager.gitlab.http_post(path, post_data=data, **kwargs) + + @cli.register_custom_action("Group", ("group_id",)) + @exc.on_http_error(exc.GitlabDeleteError) + def unshare(self, group_id, **kwargs): + """Delete a shared group link within a group. + + Args: + group_id (int): ID of the group. + **kwargs: Extra options to send to the server (e.g. sudo) + + Raises: + GitlabAuthenticationError: If authentication is not correct + GitlabDeleteError: If the server failed to perform the request + """ + path = "/groups/%s/share/%s" % (self.get_id(), group_id) + self.manager.gitlab.http_delete(path, **kwargs) + class GroupManager(CRUDMixin, RESTManager): _path = "/groups" |