summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/gl_objects/projects.py4
-rw-r--r--docs/gl_objects/projects.rst6
-rw-r--r--gitlab/objects.py16
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'