| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent cfa6358 commit 304bdd0
4 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -2,8 +2,47 @@ | |||
| 2 | 2 | Merge request approvals settings | |
| 3 | 3 | ################################ | |
| 4 | 4 | ||
| 5 | - Merge request approvals can be defined at the project level or at the merge | ||
| 6 | - request level. | ||
| 5 | + Merge request approvals can be defined at the group level, or the project level or at the merge request level. | ||
| 6 | + | ||
| 7 | + Group approval rules | ||
| 8 | + ==================== | ||
| 9 | + | ||
| 10 | + References | ||
| 11 | + ---------- | ||
| 12 | + | ||
| 13 | + * v4 API: | ||
| 14 | + | ||
| 15 | + + :class:`gitlab.v4.objects.GroupApprovalRule` | ||
| 16 | + + :class:`gitlab.v4.objects.GroupApprovalRuleManager` | ||
| 17 | + | ||
| 18 | + * GitLab API: https://docs.gitlab.com/ee/api/merge_request_approvals.html | ||
| 19 | + | ||
| 20 | + Examples | ||
| 21 | + -------- | ||
| 22 | + | ||
| 23 | + List group-level MR approval rules:: | ||
| 24 | + | ||
| 25 | + group_approval_rules = group.approval_rules.list() | ||
| 26 | + | ||
| 27 | + Change group-level MR approval rule:: | ||
| 28 | + | ||
| 29 | + g_approval_rule = group.approval_rules.get(123) | ||
| 30 | + g_approval_rule.user_ids = [234] | ||
| 31 | + g_approval_rule.save() | ||
| 32 | + | ||
| 33 | + Create new group-level MR approval rule:: | ||
| 34 | + | ||
| 35 | + group.approval_rules.create({ | ||
| 36 | + "name": "my new approval rule", | ||
| 37 | + "approvals_required": 2, | ||
| 38 | + "rule_type": "regular", | ||
| 39 | + "user_ids": [105], | ||
| 40 | + "group_ids": [653, 654], | ||
| 41 | + }) | ||
| 42 | + | ||
| 43 | + | ||
| 44 | + Project approval rules | ||
| 45 | + ====================== | ||
| 7 | 46 | ||
| 8 | 47 | References | |
| 9 | 48 | ---------- | |
@@ -15,15 +54,6 @@ References | |||
| 15 | 54 | + :class:`gitlab.v4.objects.ProjectApprovalRule` | |
| 16 | 55 | + :class:`gitlab.v4.objects.ProjectApprovalRuleManager` | |
| 17 | 56 | + :attr:`gitlab.v4.objects.Project.approvals` | |
| 18 | - + :class:`gitlab.v4.objects.ProjectMergeRequestApproval` | ||
| 19 | - + :class:`gitlab.v4.objects.ProjectMergeRequestApprovalManager` | ||
| 20 | - + :attr:`gitlab.v4.objects.ProjectMergeRequest.approvals` | ||
| 21 | - + :class:`gitlab.v4.objects.ProjectMergeRequestApprovalRule` | ||
| 22 | - + :class:`gitlab.v4.objects.ProjectMergeRequestApprovalRuleManager` | ||
| 23 | - + :attr:`gitlab.v4.objects.ProjectMergeRequest.approval_rules` | ||
| 24 | - + :class:`gitlab.v4.objects.ProjectMergeRequestApprovalState` | ||
| 25 | - + :class:`gitlab.v4.objects.ProjectMergeRequestApprovalStateManager` | ||
| 26 | - + :attr:`gitlab.v4.objects.ProjectMergeRequest.approval_state` | ||
| 27 | 57 | ||
| 28 | 58 | * GitLab API: https://docs.gitlab.com/ee/api/merge_request_approvals.html | |
| 29 | 59 | ||
@@ -43,7 +73,41 @@ Delete project-level MR approval rule:: | |||
| 43 | 73 | ||
| 44 | 74 | p_approvalrule.delete() | |
| 45 | 75 | ||
| 46 | - Get project-level or MR-level MR approvals settings:: | ||
| 76 | + Get project-level MR approvals settings:: | ||
| 77 | + | ||
| 78 | + p_mras = project.approvals.get() | ||
| 79 | + | ||
| 80 | + Change project-level MR approvals settings:: | ||
| 81 | + | ||
| 82 | + p_mras.approvals_before_merge = 2 | ||
| 83 | + p_mras.save() | ||
| 84 | + | ||
| 85 | + | ||
| 86 | + Merge request approval rules | ||
| 87 | + ============================ | ||
| 88 | + | ||
| 89 | + References | ||
| 90 | + ---------- | ||
| 91 | + | ||
| 92 | + * v4 API: | ||
| 93 | + | ||
| 94 | + + :class:`gitlab.v4.objects.ProjectMergeRequestApproval` | ||
| 95 | + + :class:`gitlab.v4.objects.ProjectMergeRequestApprovalManager` | ||
| 96 | + + :attr:`gitlab.v4.objects.ProjectMergeRequest.approvals` | ||
| 97 | + + :class:`gitlab.v4.objects.ProjectMergeRequestApprovalRule` | ||
| 98 | + + :class:`gitlab.v4.objects.ProjectMergeRequestApprovalRuleManager` | ||
| 99 | + + :attr:`gitlab.v4.objects.ProjectMergeRequest.approval_rules` | ||
| 100 | + + :class:`gitlab.v4.objects.ProjectMergeRequestApprovalState` | ||
| 101 | + + :class:`gitlab.v4.objects.ProjectMergeRequestApprovalStateManager` | ||
| 102 | + + :attr:`gitlab.v4.objects.ProjectMergeRequest.approval_state` | ||
| 103 | + | ||
| 104 | + * GitLab API: https://docs.gitlab.com/ee/api/merge_request_approvals.html | ||
| 105 | + | ||
| 106 | + Examples | ||
| 107 | + -------- | ||
| 108 | + | ||
| 109 | + | ||
| 110 | + Get MR-level MR approvals settings:: | ||
| 47 | 111 | ||
| 48 | 112 | p_mras = project.approvals.get() | |
| 49 | 113 | ||
@@ -53,10 +117,7 @@ Get MR-level approval state:: | |||
| 53 | 117 | ||
| 54 | 118 | mr_approval_state = mr.approval_state.get() | |
| 55 | 119 | ||
| 56 | - Change project-level or MR-level MR approvals settings:: | ||
| 57 | - | ||
| 58 | - p_mras.approvals_before_merge = 2 | ||
| 59 | - p_mras.save() | ||
| 120 | + Change MR-level MR approvals settings:: | ||
| 60 | 121 | ||
| 61 | 122 | mr.approvals.set_approvers(approvals_required=1) | |
| 62 | 123 | # or | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -39,6 +39,7 @@ | |||
| 39 | 39 | GroupMemberAllManager, | |
| 40 | 40 | GroupMemberManager, | |
| 41 | 41 | ) | |
| 42 | + from .merge_request_approvals import GroupApprovalRuleManager | ||
| 42 | 43 | from .merge_requests import GroupMergeRequestManager # noqa: F401 | |
| 43 | 44 | from .milestones import GroupMilestoneManager # noqa: F401 | |
| 44 | 45 | from .notification_settings import GroupNotificationSettingsManager # noqa: F401 | |
@@ -70,6 +71,7 @@ class Group(SaveMixin, ObjectDeleteMixin, RESTObject): | |||
| 70 | 71 | ||
| 71 | 72 | access_tokens: GroupAccessTokenManager | |
| 72 | 73 | accessrequests: GroupAccessRequestManager | |
| 74 | + approval_rules: GroupApprovalRuleManager | ||
| 73 | 75 | audit_events: GroupAuditEventManager | |
| 74 | 76 | badges: GroupBadgeManager | |
| 75 | 77 | billable_members: GroupBillableMemberManager | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -16,6 +16,8 @@ | |||
| 16 | 16 | from gitlab.types import RequiredOptional | |
| 17 | 17 | ||
| 18 | 18 | __all__ = [ | |
| 19 | + "GroupApprovalRule", | ||
| 20 | + "GroupApprovalRuleManager", | ||
| 19 | 21 | "ProjectApproval", | |
| 20 | 22 | "ProjectApprovalManager", | |
| 21 | 23 | "ProjectApprovalRule", | |
@@ -29,6 +31,26 @@ | |||
| 29 | 31 | ] | |
| 30 | 32 | ||
| 31 | 33 | ||
| 34 | + class GroupApprovalRule(SaveMixin, RESTObject): | ||
| 35 | + _id_attr = "id" | ||
| 36 | + _repr_attr = "name" | ||
| 37 | + | ||
| 38 | + | ||
| 39 | + class GroupApprovalRuleManager(RetrieveMixin, CreateMixin, UpdateMixin, RESTManager): | ||
| 40 | + _path = "/groups/{group_id}/approval_rules" | ||
| 41 | + _obj_cls = GroupApprovalRule | ||
| 42 | + _from_parent_attrs = {"group_id": "id"} | ||
| 43 | + _create_attrs = RequiredOptional( | ||
| 44 | + required=("name", "approvals_required"), | ||
| 45 | + optional=("user_ids", "group_ids", "rule_type"), | ||
| 46 | + ) | ||
| 47 | + | ||
| 48 | + def get( | ||
| 49 | + self, id: Union[str, int], lazy: bool = False, **kwargs: Any | ||
| 50 | + ) -> GroupApprovalRule: | ||
| 51 | + return cast(GroupApprovalRule, super().get(id=id, lazy=lazy, **kwargs)) | ||
| 52 | + | ||
| 53 | + | ||
| 32 | 54 | class ProjectApproval(SaveMixin, RESTObject): | |
| 33 | 55 | _id_attr = None | |
| 34 | 56 | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments