Skip to content

Commit 19242c3

Browse files
authored
Merge pull request python-gitlab#1005 from charlesfayal/fix_set_approvers
change path for set_approvers to new api, with defaulted rule_type an…
2 parents 066fc9b + 8e0c526 commit 19242c3

File tree

3 files changed

+18
-8
lines changed

3 files changed

+18
-8
lines changed

docs/gl_objects/mr_approvals.rst

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,12 @@ Change project-level or MR-level MR approvals settings::
4848
p_mras.approvals_before_merge = 2
4949
p_mras.save()
5050

51-
mr_mras.approvals_before_merge = 2
52-
mr_mras.save()
51+
mr_mras.set_approvers(approvals_required = 1)
5352

5453
Change project-level or MR-level MR allowed approvers::
5554

5655
project.approvals.set_approvers(approver_ids=[105],
5756
approver_group_ids=[653, 654])
5857

59-
mr.approvals.set_approvers(approver_ids=[105],
58+
mr.approvals.set_approvers(approvals_required = 1, approver_ids=[105],
6059
approver_group_ids=[653, 654])

gitlab/v4/objects.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2708,10 +2708,13 @@ class ProjectMergeRequestApprovalManager(GetWithoutIdMixin, UpdateMixin, RESTMan
27082708
_update_uses_post = True
27092709

27102710
@exc.on_http_error(exc.GitlabUpdateError)
2711-
def set_approvers(self, approver_ids=None, approver_group_ids=None, **kwargs):
2711+
def set_approvers(
2712+
self, approvals_required, approver_ids=None, approver_group_ids=None, **kwargs
2713+
):
27122714
"""Change MR-level allowed approvers and approver groups.
27132715
27142716
Args:
2717+
approvals_required (integer): The number of required approvals for this rule
27152718
approver_ids (list): User IDs that can approve MRs
27162719
approver_group_ids (list): Group IDs whose members can approve MRs
27172720
@@ -2722,8 +2725,16 @@ def set_approvers(self, approver_ids=None, approver_group_ids=None, **kwargs):
27222725
approver_ids = approver_ids or []
27232726
approver_group_ids = approver_group_ids or []
27242727

2725-
path = "%s/%s/approvers" % (self._parent.manager.path, self._parent.get_id())
2726-
data = {"approver_ids": approver_ids, "approver_group_ids": approver_group_ids}
2728+
path = "%s/%s/approval_rules" % (
2729+
self._parent.manager.path,
2730+
self._parent.get_id(),
2731+
)
2732+
data = {
2733+
"approvals_required": approvals_required,
2734+
"rule_type": "regular",
2735+
"user_ids": approver_ids,
2736+
"group_ids": approver_group_ids,
2737+
}
27272738
self.gitlab.http_put(path, post_data=data, **kwargs)
27282739

27292740

tools/ee-test.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def end_log():
3737
approval.save()
3838
approval = project1.approvals.get()
3939
assert v != approval.reset_approvals_on_push
40-
project1.approvals.set_approvers([1], [])
40+
project1.approvals.set_approvers(1, [1], [])
4141
approval = project1.approvals.get()
4242
assert approval.approvers[0]["user"]["id"] == 1
4343

@@ -50,7 +50,7 @@ def end_log():
5050
approval.save()
5151
approval = mr.approvals.get()
5252
assert approval.approvals_required == 3
53-
mr.approvals.set_approvers([1], [])
53+
mr.approvals.set_approvers(1, [1], [])
5454
approval = mr.approvals.get()
5555
assert approval.approvers[0]["user"]["id"] == 1
5656

0 commit comments

Comments
 (0)