From cedf080ff8553b6ef5cd7995f5ab3608aaeb3793 Mon Sep 17 00:00:00 2001 From: fgouteroux Date: Wed, 6 Jan 2016 14:25:28 +0100 Subject: add fork project support --- gitlab/objects.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'gitlab/objects.py') diff --git a/gitlab/objects.py b/gitlab/objects.py index 26896f2..db21eaf 100644 --- a/gitlab/objects.py +++ b/gitlab/objects.py @@ -545,6 +545,15 @@ class ProjectEventManager(BaseManager): obj_cls = ProjectEvent +class ProjectFork(GitlabObject): + _url = '/projects/fork/%(project_id)s' + canUpdate = False + canDelete = False + canList = False + canGet = False + requiredUrlAttrs = ['project_id'] + + class ProjectHook(GitlabObject): _url = '/projects/%(project_id)s/hooks' requiredUrlAttrs = ['project_id'] @@ -956,6 +965,25 @@ class Project(GitlabObject): r = self.gitlab._raw_delete(url, **kwargs) raise_error_from_response(r, GitlabDeleteError) + def create_fork_relation(self, forked_from_id): + """Create a forked from/to relation between existing projects. + + Args: + forked_from_id (int): The ID of the project that was forked from + + Raises: + GitlabCreateError: Operation failed + GitlabConnectionError: Connection to GitLab-server failed + """ + url = "/projects/%s/fork/%s" % (self.id, forked_from_id) + r = self.gitlab._raw_post(url) + raise_error_from_response(r, GitlabCreateError, 201) + + def delete_fork_relation(self): + url = "/projects/%s/fork" % self.id + r = self.gitlab._raw_delete(url) + raise_error_from_response(r, GitlabDeleteError) + class TeamMember(GitlabObject): _url = '/user_teams/%(team_id)s/members' -- cgit v1.2.1