summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/gl_objects/mr_approvals.rst5
-rw-r--r--gitlab/v4/objects.py17
-rwxr-xr-xtools/ee-test.py4
3 files changed, 18 insertions, 8 deletions
diff --git a/docs/gl_objects/mr_approvals.rst b/docs/gl_objects/mr_approvals.rst
index b5de88c..253b68d 100644
--- a/docs/gl_objects/mr_approvals.rst
+++ b/docs/gl_objects/mr_approvals.rst
@@ -48,13 +48,12 @@ Change project-level or MR-level MR approvals settings::
p_mras.approvals_before_merge = 2
p_mras.save()
- mr_mras.approvals_before_merge = 2
- mr_mras.save()
+ mr_mras.set_approvers(approvals_required = 1)
Change project-level or MR-level MR allowed approvers::
project.approvals.set_approvers(approver_ids=[105],
approver_group_ids=[653, 654])
- mr.approvals.set_approvers(approver_ids=[105],
+ mr.approvals.set_approvers(approvals_required = 1, approver_ids=[105],
approver_group_ids=[653, 654])
diff --git a/gitlab/v4/objects.py b/gitlab/v4/objects.py
index ed65d7b..b31870c 100644
--- a/gitlab/v4/objects.py
+++ b/gitlab/v4/objects.py
@@ -2708,10 +2708,13 @@ class ProjectMergeRequestApprovalManager(GetWithoutIdMixin, UpdateMixin, RESTMan
_update_uses_post = True
@exc.on_http_error(exc.GitlabUpdateError)
- def set_approvers(self, approver_ids=None, approver_group_ids=None, **kwargs):
+ def set_approvers(
+ self, approvals_required, approver_ids=None, approver_group_ids=None, **kwargs
+ ):
"""Change MR-level allowed approvers and approver groups.
Args:
+ approvals_required (integer): The number of required approvals for this rule
approver_ids (list): User IDs that can approve MRs
approver_group_ids (list): Group IDs whose members can approve MRs
@@ -2722,8 +2725,16 @@ class ProjectMergeRequestApprovalManager(GetWithoutIdMixin, UpdateMixin, RESTMan
approver_ids = approver_ids or []
approver_group_ids = approver_group_ids or []
- path = "%s/%s/approvers" % (self._parent.manager.path, self._parent.get_id())
- data = {"approver_ids": approver_ids, "approver_group_ids": approver_group_ids}
+ path = "%s/%s/approval_rules" % (
+ self._parent.manager.path,
+ self._parent.get_id(),
+ )
+ data = {
+ "approvals_required": approvals_required,
+ "rule_type": "regular",
+ "user_ids": approver_ids,
+ "group_ids": approver_group_ids,
+ }
self.gitlab.http_put(path, post_data=data, **kwargs)
diff --git a/tools/ee-test.py b/tools/ee-test.py
index 82adf5c..af12957 100755
--- a/tools/ee-test.py
+++ b/tools/ee-test.py
@@ -37,7 +37,7 @@ approval.reset_approvals_on_push = not v
approval.save()
approval = project1.approvals.get()
assert v != approval.reset_approvals_on_push
-project1.approvals.set_approvers([1], [])
+project1.approvals.set_approvers(1, [1], [])
approval = project1.approvals.get()
assert approval.approvers[0]["user"]["id"] == 1
@@ -50,7 +50,7 @@ approval.approvals_required = 3
approval.save()
approval = mr.approvals.get()
assert approval.approvals_required == 3
-mr.approvals.set_approvers([1], [])
+mr.approvals.set_approvers(1, [1], [])
approval = mr.approvals.get()
assert approval.approvers[0]["user"]["id"] == 1