| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 6eee494 commit 055557e
8 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -36,6 +36,7 @@ API examples | |||
| 36 | 36 | gl_objects/boards | |
| 37 | 37 | gl_objects/labels | |
| 38 | 38 | gl_objects/notifications | |
| 39 | + gl_objects/member_roles.rst | ||
| 39 | 40 | gl_objects/merge_trains | |
| 40 | 41 | gl_objects/merge_requests | |
| 41 | 42 | gl_objects/merge_request_approvals.rst | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,71 @@ | |||
| 1 | + ############ | ||
| 2 | + Member Roles | ||
| 3 | + ############ | ||
| 4 | + | ||
| 5 | + You can configure member roles at the instance-level (admin only), or | ||
| 6 | + at group level. | ||
| 7 | + | ||
| 8 | + Instance-level member roles | ||
| 9 | + =========================== | ||
| 10 | + | ||
| 11 | + This endpoint requires admin access. | ||
| 12 | + | ||
| 13 | + Reference | ||
| 14 | + --------- | ||
| 15 | + | ||
| 16 | + * v4 API | ||
| 17 | + | ||
| 18 | + + :class:`gitlab.v4.objects.MemberRole` | ||
| 19 | + + :class:`gitlab.v4.objects.MemberRoleManager` | ||
| 20 | + + :attr:`gitlab.Gitlab.member_roles` | ||
| 21 | + | ||
| 22 | + * GitLab API | ||
| 23 | + | ||
| 24 | + + https://docs.gitlab.com/ee/api/member_roles.html#manage-instance-member-roles | ||
| 25 | + | ||
| 26 | + Examples | ||
| 27 | + -------- | ||
| 28 | + | ||
| 29 | + List member roles:: | ||
| 30 | + | ||
| 31 | + variables = gl.member_roles.list() | ||
| 32 | + | ||
| 33 | + Create a member role:: | ||
| 34 | + | ||
| 35 | + variable = gl.member_roles.create({'name': 'Custom Role', 'base_access_level': value}) | ||
| 36 | + | ||
| 37 | + Remove a member role:: | ||
| 38 | + | ||
| 39 | + gl.member_roles.delete(member_role_id) | ||
| 40 | + | ||
| 41 | + Group member role | ||
| 42 | + ================= | ||
| 43 | + | ||
| 44 | + Reference | ||
| 45 | + --------- | ||
| 46 | + | ||
| 47 | + * v4 API | ||
| 48 | + | ||
| 49 | + + :class:`gitlab.v4.objects.GroupMemberRole` | ||
| 50 | + + :class:`gitlab.v4.objects.GroupMemberRoleManager` | ||
| 51 | + + :attr:`gitlab.v4.objects.Group.member_roles` | ||
| 52 | + | ||
| 53 | + * GitLab API | ||
| 54 | + | ||
| 55 | + + https://docs.gitlab.com/ee/api/member_roles.html#manage-group-member-roles | ||
| 56 | + | ||
| 57 | + Examples | ||
| 58 | + -------- | ||
| 59 | + | ||
| 60 | + List member roles:: | ||
| 61 | + | ||
| 62 | + member_roles = group.member_roles.list() | ||
| 63 | + | ||
| 64 | + Create a member role:: | ||
| 65 | + | ||
| 66 | + member_roles = group.member_roles.create({'name': 'Custom Role', 'base_access_level': value}) | ||
| 67 | + | ||
| 68 | + Remove a member role:: | ||
| 69 | + | ||
| 70 | + gl.member_roles.delete(member_role_id) | ||
| 71 | + | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -166,6 +166,8 @@ def __init__( | |||
| 166 | 166 | """See :class:`~gitlab.v4.objects.LicenseManager`""" | |
| 167 | 167 | self.namespaces = objects.NamespaceManager(self) | |
| 168 | 168 | """See :class:`~gitlab.v4.objects.NamespaceManager`""" | |
| 169 | + self.member_roles = objects.MemberRoleManager(self) | ||
| 170 | + """See :class:`~gitlab.v4.objects.MergeRequestManager`""" | ||
| 169 | 171 | self.mergerequests = objects.MergeRequestManager(self) | |
| 170 | 172 | """See :class:`~gitlab.v4.objects.MergeRequestManager`""" | |
| 171 | 173 | self.notificationsettings = objects.NotificationSettingsManager(self) | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -39,6 +39,7 @@ | |||
| 39 | 39 | from .keys import * | |
| 40 | 40 | from .labels import * | |
| 41 | 41 | from .ldap import * | |
| 42 | + from .member_roles import * | ||
| 42 | 43 | from .members import * | |
| 43 | 44 | from .merge_request_approvals import * | |
| 44 | 45 | from .merge_requests import * | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -36,6 +36,7 @@ | |||
| 36 | 36 | from .issues import GroupIssueManager # noqa: F401 | |
| 37 | 37 | from .iterations import GroupIterationManager # noqa: F401 | |
| 38 | 38 | from .labels import GroupLabelManager # noqa: F401 | |
| 39 | + from .member_roles import GroupMemberRoleManager # noqa: F401 | ||
| 39 | 40 | from .members import ( # noqa: F401 | |
| 40 | 41 | GroupBillableMemberManager, | |
| 41 | 42 | GroupMemberAllManager, | |
@@ -92,6 +93,7 @@ class Group(SaveMixin, ObjectDeleteMixin, RESTObject): | |||
| 92 | 93 | iterations: GroupIterationManager | |
| 93 | 94 | labels: GroupLabelManager | |
| 94 | 95 | ldap_group_links: GroupLDAPGroupLinkManager | |
| 96 | + member_roles: GroupMemberRoleManager | ||
| 95 | 97 | members: GroupMemberManager | |
| 96 | 98 | members_all: GroupMemberAllManager | |
| 97 | 99 | mergerequests: GroupMergeRequestManager | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,102 @@ | |||
| 1 | + """ | ||
| 2 | + GitLab API: | ||
| 3 | + https://docs.gitlab.com/ee/api/instance_level_ci_variables.html | ||
| 4 | + https://docs.gitlab.com/ee/api/project_level_variables.html | ||
| 5 | + https://docs.gitlab.com/ee/api/group_level_variables.html | ||
| 6 | + """ | ||
| 7 | + | ||
| 8 | + from gitlab.base import RESTObject | ||
| 9 | + from gitlab.mixins import ( | ||
| 10 | + CreateMixin, | ||
| 11 | + DeleteMixin, | ||
| 12 | + ListMixin, | ||
| 13 | + ObjectDeleteMixin, | ||
| 14 | + SaveMixin, | ||
| 15 | + ) | ||
| 16 | + from gitlab.types import RequiredOptional | ||
| 17 | + | ||
| 18 | + __all__ = [ | ||
| 19 | + "MemberRole", | ||
| 20 | + "MemberRoleManager", | ||
| 21 | + "GroupMemberRole", | ||
| 22 | + "GroupMemberRoleManager", | ||
| 23 | + ] | ||
| 24 | + | ||
| 25 | + | ||
| 26 | + class MemberRole(SaveMixin, ObjectDeleteMixin, RESTObject): | ||
| 27 | + pass | ||
| 28 | + | ||
| 29 | + | ||
| 30 | + class MemberRoleManager( | ||
| 31 | + ListMixin[MemberRole], CreateMixin[MemberRole], DeleteMixin[MemberRole] | ||
| 32 | + ): | ||
| 33 | + _path = "/member_roles" | ||
| 34 | + _obj_cls = MemberRole | ||
| 35 | + _create_attrs = RequiredOptional( | ||
| 36 | + required=("name", "base_access_level"), | ||
| 37 | + optional=( | ||
| 38 | + "description", | ||
| 39 | + "admin_cicd_variables", | ||
| 40 | + "admin_compliance_framework", | ||
| 41 | + "admin_group_member", | ||
| 42 | + "admin_group_member", | ||
| 43 | + "admin_merge_request", | ||
| 44 | + "admin_push_rules", | ||
| 45 | + "admin_terraform_state", | ||
| 46 | + "admin_vulnerability", | ||
| 47 | + "admin_web_hook", | ||
| 48 | + "archive_project", | ||
| 49 | + "manage_deploy_tokens", | ||
| 50 | + "manage_group_access_tokens", | ||
| 51 | + "manage_merge_request_settings", | ||
| 52 | + "manage_project_access_tokens", | ||
| 53 | + "manage_security_policy_link", | ||
| 54 | + "read_code", | ||
| 55 | + "read_runners", | ||
| 56 | + "read_dependency", | ||
| 57 | + "read_vulnerability", | ||
| 58 | + "remove_group", | ||
| 59 | + "remove_project", | ||
| 60 | + ), | ||
| 61 | + ) | ||
| 62 | + | ||
| 63 | + | ||
| 64 | + class GroupMemberRole(SaveMixin, ObjectDeleteMixin, RESTObject): | ||
| 65 | + pass | ||
| 66 | + | ||
| 67 | + | ||
| 68 | + class GroupMemberRoleManager( | ||
| 69 | + ListMixin[GroupMemberRole], | ||
| 70 | + CreateMixin[GroupMemberRole], | ||
| 71 | + DeleteMixin[GroupMemberRole], | ||
| 72 | + ): | ||
| 73 | + _path = "/groups/{group_id}/member_roles" | ||
| 74 | + _from_parent_attrs = {"group_id": "id"} | ||
| 75 | + _obj_cls = GroupMemberRole | ||
| 76 | + _create_attrs = RequiredOptional( | ||
| 77 | + required=("name", "base_access_level"), | ||
| 78 | + optional=( | ||
| 79 | + "description", | ||
| 80 | + "admin_cicd_variables", | ||
| 81 | + "admin_compliance_framework", | ||
| 82 | + "admin_group_member", | ||
| 83 | + "admin_group_member", | ||
| 84 | + "admin_merge_request", | ||
| 85 | + "admin_push_rules", | ||
| 86 | + "admin_terraform_state", | ||
| 87 | + "admin_vulnerability", | ||
| 88 | + "admin_web_hook", | ||
| 89 | + "archive_project", | ||
| 90 | + "manage_deploy_tokens", | ||
| 91 | + "manage_group_access_tokens", | ||
| 92 | + "manage_merge_request_settings", | ||
| 93 | + "manage_project_access_tokens", | ||
| 94 | + "manage_security_policy_link", | ||
| 95 | + "read_code", | ||
| 96 | + "read_runners", | ||
| 97 | + "read_dependency", | ||
| 98 | + "read_vulnerability", | ||
| 99 | + "remove_group", | ||
| 100 | + "remove_project", | ||
| 101 | + ), | ||
| 102 | + ) | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,18 @@ | |||
| 1 | + """ | ||
| 2 | + GitLab API: | ||
| 3 | + https://docs.gitlab.com/ee/api/member_roles.html | ||
| 4 | + """ | ||
| 5 | + | ||
| 6 | + | ||
| 7 | + def test_instance_member_role(gl): | ||
| 8 | + member_role = gl.member_roles.create( | ||
| 9 | + { | ||
| 10 | + "name": "Custom webhook manager role", | ||
| 11 | + "base_access_level": 20, | ||
| 12 | + "description": "Custom reporter that can manage webhooks", | ||
| 13 | + "admin_web_hook": True, | ||
| 14 | + } | ||
| 15 | + ) | ||
| 16 | + assert member_role.id > 0 | ||
| 17 | + assert member_role in gl.member_roles.list() | ||
| 18 | + gl.member_roles.delete(member_role.id) | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments