Skip to content

Commit db1fb89

Browse files
author
Gauvain Pocentek
committed
Implement ProjectMilestone.issues()
This lists the issues related to the milestone. Add python API tests for issues.
1 parent 1ecb739 commit db1fb89

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

gitlab/objects.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -891,6 +891,19 @@ class ProjectMilestone(GitlabObject):
891891
optionalCreateAttrs = ['description', 'due_date', 'state_event']
892892
shortPrintAttr = 'title'
893893

894+
def issues(self):
895+
url = "/projects/%s/milestones/%s/issues" % (self.project_id, self.id)
896+
r = self.gitlab._raw_get(url)
897+
raise_error_from_response(r, GitlabDeleteError)
898+
899+
l = []
900+
for j in r.json():
901+
o = ProjectIssue(self, j)
902+
o._from_api = True
903+
l.append(o)
904+
905+
return l
906+
894907

895908
class ProjectMilestoneManager(BaseManager):
896909
obj_cls = ProjectMilestone

tools/python_test.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,3 +131,16 @@
131131
m1.save()
132132
m1 = admin_project.milestones.get(1)
133133
assert(m1.state == 'closed')
134+
135+
# issues
136+
issue1 = admin_project.issues.create({'title': 'my issue 1',
137+
'milestone_id': m1.id})
138+
issue2 = admin_project.issues.create({'title': 'my issue 2'})
139+
issue3 = admin_project.issues.create({'title': 'my issue 3'})
140+
assert(len(admin_project.issues.list()) == 3)
141+
issue3.state_event = 'close'
142+
issue3.save()
143+
assert(len(admin_project.issues.list(state='closed')) == 1)
144+
assert(len(admin_project.issues.list(state='opened')) == 2)
145+
assert(len(admin_project.issues.list(milestone='milestone1')) == 1)
146+
assert(m1.issues()[0].title == 'my issue 1')

0 commit comments

Comments
 (0)