summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gitlab/objects.py13
-rw-r--r--tools/python_test.py13
2 files changed, 26 insertions, 0 deletions
diff --git a/gitlab/objects.py b/gitlab/objects.py
index 5ae1fb3..70c1286 100644
--- a/gitlab/objects.py
+++ b/gitlab/objects.py
@@ -891,6 +891,19 @@ class ProjectMilestone(GitlabObject):
optionalCreateAttrs = ['description', 'due_date', 'state_event']
shortPrintAttr = 'title'
+ def issues(self):
+ url = "/projects/%s/milestones/%s/issues" % (self.project_id, self.id)
+ r = self.gitlab._raw_get(url)
+ raise_error_from_response(r, GitlabDeleteError)
+
+ l = []
+ for j in r.json():
+ o = ProjectIssue(self, j)
+ o._from_api = True
+ l.append(o)
+
+ return l
+
class ProjectMilestoneManager(BaseManager):
obj_cls = ProjectMilestone
diff --git a/tools/python_test.py b/tools/python_test.py
index 0d3b9f2..916f84b 100644
--- a/tools/python_test.py
+++ b/tools/python_test.py
@@ -131,3 +131,16 @@ m1.state_event = 'close'
m1.save()
m1 = admin_project.milestones.get(1)
assert(m1.state == 'closed')
+
+# issues
+issue1 = admin_project.issues.create({'title': 'my issue 1',
+ 'milestone_id': m1.id})
+issue2 = admin_project.issues.create({'title': 'my issue 2'})
+issue3 = admin_project.issues.create({'title': 'my issue 3'})
+assert(len(admin_project.issues.list()) == 3)
+issue3.state_event = 'close'
+issue3.save()
+assert(len(admin_project.issues.list(state='closed')) == 1)
+assert(len(admin_project.issues.list(state='opened')) == 2)
+assert(len(admin_project.issues.list(milestone='milestone1')) == 1)
+assert(m1.issues()[0].title == 'my issue 1')