8000 fix(projects): support `approval_rules` endpoint for projects · python-gitlab/python-gitlab@c155782 · GitHub
[go: up one dir, main page]

Skip to content

Commit c155782

Browse files
fix(projects): support approval_rules endpoint for projects
The `approvers` API endpoint is deprecated [1]. GitLab instead uses the `approval_rules` API endpoint to modify approval settings for merge requests. This adds the functionality for project-level merge request approval settings. Note that there does not exist an endpoint to 'get' a single approval rule at this moment - only 'list'. [1] https://docs.gitlab.com/ee/api/merge_request_approvals.html
1 parent e790b1e commit c155782

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

docs/gl_objects/mr_approvals.rst

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ References
1212

1313
+ :class:`gitlab.v4.objects.ProjectApproval`
1414
+ :class:`gitlab.v4.objects.ProjectApprovalManager`
15+
+ :class:`gitlab.v4.objects.ProjectApprovalRule`
16+
+ :class:`gitlab.v4.objects.ProjectApprovalRuleManager`
1517
+ :attr:`gitlab.v4.objects.Project.approvals`
1618
+ :class:`gitlab.v4.objects.ProjectMergeRequestApproval`
1719
+ :class:`gitlab.v4.objects.ProjectMergeRequestApprovalManager`
@@ -22,6 +24,19 @@ References
2224
Examples
2325
--------
2426

27+
List project-level MR approval rules::
28+
29+
p_mras = project.approvalrules.list()
30+
31+
Change project-level MR approval rule::
32+
33+
p_approvalrule.user_ids = [234]
34+
p_approvalrule.save()
35+
36+
Delete project-level MR approval rule::
37+
38+
p_approvalrule.delete()
39+
2540
Get project-level or MR-level MR approvals settings::
2641

2742
p_mras = project.approvals.get()

gitlab/v4/objects.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3735,6 +3735,19 @@ def set_approvers(self, approver_ids=None, approver_group_ids=None, **kwargs):
37353735
self.gitlab.http_put(path, post_data=data, **kwargs)
37363736

37373737

3738+
class ProjectApprovalRule(SaveMixin, ObjectDeleteMixin, RESTObject):
3739+
_id_attr = "id"
3740+
3741+
3742+
class ProjectApprovalRuleManager(
3743+
ListMixin, CreateMixin, UpdateMixin, DeleteMixin, RESTManager
3744+
):
3745+
_path = "/projects/%(project_id)s/approval_rules"
3746+
_obj_cls = ProjectApprovalRule
3747+
_from_parent_attrs = {"project_id": "id"}
3748+
_create_attrs = (("name", "approvals_required"), ("user_ids", "group_ids"))
3749+
3750+
37383751
class ProjectDeployment(RESTObject):
37393752
pass
37403753

@@ -3845,6 +3858,7 @@ class Project(SaveMixin, ObjectDeleteMixin, RESTObject):
38453858
_managers = (
38463859
("accessrequests", "ProjectAccessRequestManager"),
38473860
("approvals", "ProjectApprovalManager"),
3861+
("approvalrules", "ProjectApprovalRuleManager"),
38483862
("badges", "ProjectBadgeManager"),
38493863
("boards", "ProjectBoardManager"),
38503864
("branches", "ProjectBranchManager"),

0 commit comments

Comments
 (0)
0