diff options
-rw-r--r-- | docs/gl_objects/projects.py | 4 | ||||
-rw-r--r-- | docs/gl_objects/projects.rst | 6 | ||||
-rw-r--r-- | gitlab/objects.py | 16 |
3 files changed, 26 insertions, 0 deletions
diff --git a/docs/gl_objects/projects.py b/docs/gl_objects/projects.py index cd13675..d03f0d3 100644 --- a/docs/gl_objects/projects.py +++ b/docs/gl_objects/projects.py @@ -105,3 +105,7 @@ project.members.delete(user.id) # or member.delete() # end members delete + +# share +project.share(group.id, group.DEVELOPER_ACCESS) +# end share diff --git a/docs/gl_objects/projects.rst b/docs/gl_objects/projects.rst index 3bdeff4..bd56fba 100644 --- a/docs/gl_objects/projects.rst +++ b/docs/gl_objects/projects.rst @@ -137,3 +137,9 @@ Remove a member from the project team: .. literalinclude:: projects.py :start-after: # members delete :end-before: # end members delete + +Share the project with a group: + +.. literalinclude:: projects.py + :start-after: # share + :end-before: # end share diff --git a/gitlab/objects.py b/gitlab/objects.py index 44f34cd..dba54f0 100644 --- a/gitlab/objects.py +++ b/gitlab/objects.py @@ -1948,6 +1948,22 @@ class Project(GitlabObject): raise_error_from_response(r, GitlabCreateError, 201) return Project(self.gitlab, r.json()) if r.status_code == 201 else self + def share(self, group_id, group_access, **kwargs): + """Share the project with a group. + + Args: + group_id (int): ID of the group. + group_access (int): Access level for the group. + + Raises: + GitlabConnectionError: If the server cannot be reached. + GitlabCreateError: If the server fails to perform the request. + """ + url = "/projects/%s/share" % self.id + data = {'group_id': group_id, 'group_access': group_access} + r = self.gitlab._raw_post(url, data=data, **kwargs) + raise_error_from_response(r, GitlabCreateError, 201) + class TeamMember(GitlabObject): _url = '/user_teams/%(team_id)s/members' |