summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gitlab/exceptions.py8
-rw-r--r--gitlab/objects.py16
2 files changed, 24 insertions, 0 deletions
diff --git a/gitlab/exceptions.py b/gitlab/exceptions.py
index 49a3728..3fb0613 100644
--- a/gitlab/exceptions.py
+++ b/gitlab/exceptions.py
@@ -91,6 +91,14 @@ class GitlabUnblockError(GitlabOperationError):
pass
+class GitlabSubscribeError(GitlabOperationError):
+ pass
+
+
+class GitlabUnsubscribeError(GitlabOperationError):
+ pass
+
+
class GitlabMRForbiddenError(GitlabOperationError):
pass
diff --git a/gitlab/objects.py b/gitlab/objects.py
index 9c6197c..a865ad4 100644
--- a/gitlab/objects.py
+++ b/gitlab/objects.py
@@ -998,6 +998,22 @@ class ProjectIssue(GitlabObject):
issue_id=self.id,
**kwargs)
+ def subscribe(self, **kwargs):
+ url = ('/projects/%(project_id)s/issues/%(issue_id)s/subscription' %
+ {'project_id': self.project_id, 'issue_id': self.id})
+
+ r = self.gitlab._raw_post(url, **kwargs)
+ raise_error_from_response(r, GitlabSubscribeError)
+ self._set_from_dict(r.json())
+
+ def unsubscribe(self, **kwargs):
+ url = ('/projects/%(project_id)s/issues/%(issue_id)s/subscription' %
+ {'project_id': self.project_id, 'issue_id': self.id})
+
+ r = self.gitlab._raw_delete(url, **kwargs)
+ raise_error_from_response(r, GitlabUnsubscribeError)
+ self._set_from_dict(r.json())
+
class ProjectIssueManager(BaseManager):
obj_cls = ProjectIssue