summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOleksii Shkurupii <Oleksii.Shkurupii@playtech.com>2020-08-26 13:37:03 +0300
committerOleksii Shkurupii <Oleksii.Shkurupii@playtech.com>2020-08-26 15:13:08 +0300
commit88f8cc78f97156d5888a9600bdb8721720563120 (patch)
tree78e1d318810028d57b8d558116e6bbef76efa602
parente2dc9ece1a0af37073c41bfa8161fcec5fa01234 (diff)
downloadgitlab-88f8cc78f97156d5888a9600bdb8721720563120.tar.gz
feat: add support to resource milestone events
Fixes #1154
-rw-r--r--docs/gl_objects/milestones.rst33
-rw-r--r--gitlab/v4/objects.py24
-rw-r--r--tools/python_test_v4.py13
3 files changed, 70 insertions, 0 deletions
diff --git a/docs/gl_objects/milestones.rst b/docs/gl_objects/milestones.rst
index f24e13f..40f9ba6 100644
--- a/docs/gl_objects/milestones.rst
+++ b/docs/gl_objects/milestones.rst
@@ -2,6 +2,9 @@
Milestones
##########
+Project milestones
+==================
+
Reference
---------
@@ -70,3 +73,33 @@ List the issues related to a milestone::
List the merge requests related to a milestone::
merge_requests = milestone.merge_requests()
+
+Milestone events
+============
+
+Resource milestone events keep track of what happens to GitLab issues and merge requests.
+
+Reference
+---------
+
+* v4 API:
+
+ + :class:`gitlab.v4.objects.ProjectIssueResourceMilestoneEvent`
+ + :class:`gitlab.v4.objects.ProjectIssueResourceMilestoneEventManager`
+ + :attr:`gitlab.v4.objects.ProjectIssue.resourcemilestoneevents`
+ + :class:`gitlab.v4.objects.ProjectMergeRequestResourceMilestoneEvent`
+ + :class:`gitlab.v4.objects.ProjectMergeRequestResourceMilestoneEventManager`
+ + :attr:`gitlab.v4.objects.ProjectMergeRequest.resourcemilestoneevents`
+
+* GitLab API: https://docs.gitlab.com/ee/api/resource_milestone_events.html
+
+Examples
+--------
+
+Get milestones for a resource (issue, merge request)::
+
+ milestones = resource.resourcemilestoneevents.list()
+
+Get a specific milestone for a resource::
+
+ milestone = resource.resourcemilestoneevents.get(milestone_id)
diff --git a/gitlab/v4/objects.py b/gitlab/v4/objects.py
index 2f3e8a5..16efc39 100644
--- a/gitlab/v4/objects.py
+++ b/gitlab/v4/objects.py
@@ -2654,6 +2654,16 @@ class ProjectIssueResourceLabelEventManager(RetrieveMixin, RESTManager):
_from_parent_attrs = {"project_id": "project_id", "issue_iid": "iid"}
+class ProjectIssueResourceMilestoneEvent(RESTObject):
+ pass
+
+
+class ProjectIssueResourceMilestoneEventManager(RetrieveMixin, RESTManager):
+ _path = "/projects/%(project_id)s/issues/%(issue_iid)s/resource_milestone_events"
+ _obj_cls = ProjectIssueResourceMilestoneEvent
+ _from_parent_attrs = {"project_id": "project_id", "issue_iid": "iid"}
+
+
class ProjectIssue(
UserAgentDetailMixin,
SubscribableMixin,
@@ -2672,6 +2682,7 @@ class ProjectIssue(
("links", "ProjectIssueLinkManager"),
("notes", "ProjectIssueNoteManager"),
("resourcelabelevents", "ProjectIssueResourceLabelEventManager"),
+ ("resourcemilestoneevents", "ProjectIssueResourceMilestoneEventManager"),
)
@cli.register_custom_action("ProjectIssue", ("to_project_id",))
@@ -3065,6 +3076,18 @@ class ProjectMergeRequestResourceLabelEventManager(RetrieveMixin, RESTManager):
_from_parent_attrs = {"project_id": "project_id", "mr_iid": "iid"}
+class ProjectMergeRequestResourceMilestoneEvent(RESTObject):
+ pass
+
+
+class ProjectMergeRequestResourceMilestoneEventManager(RetrieveMixin, RESTManager):
+ _path = (
+ "/projects/%(project_id)s/merge_requests/%(mr_iid)s/resource_milestone_events"
+ )
+ _obj_cls = ProjectMergeRequestResourceMilestoneEvent
+ _from_parent_attrs = {"project_id": "project_id", "mr_iid": "iid"}
+
+
class ProjectMergeRequest(
SubscribableMixin,
TodoMixin,
@@ -3083,6 +3106,7 @@ class ProjectMergeRequest(
("discussions", "ProjectMergeRequestDiscussionManager"),
("notes", "ProjectMergeRequestNoteManager"),
("resourcelabelevents", "ProjectMergeRequestResourceLabelEventManager"),
+ ("resourcemilestoneevents", "ProjectMergeRequestResourceMilestoneEventManager"),
)
@cli.register_custom_action("ProjectMergeRequest")
diff --git a/tools/python_test_v4.py b/tools/python_test_v4.py
index 6ecaf24..717bd24 100644
--- a/tools/python_test_v4.py
+++ b/tools/python_test_v4.py
@@ -782,6 +782,11 @@ assert events
event = issue1.resourcelabelevents.get(events[0].id)
assert event
+# issue milestones
+milestones = issue1.resourcemilestoneevents.list()
+assert milestones
+milestone = issue1.resourcemilestoneevents.get(milestones[0].id)
+assert milestone
size = len(issue1.discussions.list())
discussion = issue1.discussions.create({"body": "Discussion body"})
@@ -891,6 +896,14 @@ assert events
event = mr.resourcelabelevents.get(events[0].id)
assert event
+# mr milestone events
+mr.milestone_id = m1.id
+mr.save()
+milestones = mr.resourcemilestoneevents.list()
+assert milestones
+milestone = mr.resourcemilestoneevents.get(milestones[0].id)
+assert milestone
+
# rebasing
assert mr.rebase()