| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 8257400 commit 40db4cd
5 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -5,6 +5,7 @@ API objects manipulation | |||
| 5 | 5 | .. toctree:: | |
| 6 | 6 | :maxdepth: 1 | |
| 7 | 7 | ||
| 8 | + gl_objects/access_requests | ||
| 8 | 9 | gl_objects/branches | |
| 9 | 10 | gl_objects/builds | |
| 10 | 11 | gl_objects/commits | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,38 @@ | |||
| 1 | + # list | ||
| 2 | + p_ars = gl.project_accessrequests.list(project_id=1) | ||
| 3 | + g_ars = gl.group_accessrequests.list(group_id=1) | ||
| 4 | + # or | ||
| 5 | + p_ars = project.accessrequests.list() | ||
| 6 | + g_ars = group.accessrequests.list() | ||
| 7 | + # end list | ||
| 8 | + | ||
| 9 | + # get | ||
| 10 | + p_ar = gl.project_accessrequests.get(user_id, project_id=1) | ||
| 11 | + g_ar = gl.group_accessrequests.get(user_id, group_id=1) | ||
| 12 | + # or | ||
| 13 | + p_ar = project.accessrequests.get(user_id) | ||
| 14 | + g_ar = group.accessrequests.get(user_id) | ||
| 15 | + # end get | ||
| 16 | + | ||
| 17 | + # create | ||
| 18 | + p_ar = gl.project_accessrequests.create({}, project_id=1) | ||
| 19 | + g_ar = gl.group_accessrequests.create({}, group_id=1) | ||
| 20 | + # or | ||
| 21 | + p_ar = project.accessrequests.create({}) | ||
| 22 | + g_ar = group.accessrequests.create({}) | ||
| 23 | + # end create | ||
| 24 | + | ||
| 25 | + # approve | ||
| 26 | + ar.approve() # defaults to DEVELOPER level | ||
| 27 | + ar.approve(access_level=gitlab.MASTER_ACCESS) # explicitly set access level | ||
| 28 | + # approve | ||
| 29 | + | ||
| 30 | + # delete | ||
| 31 | + gl.project_accessrequests.delete(user_id, project_id=1) | ||
| 32 | + gl.group_accessrequests.delete(user_id, group_id=1) | ||
| 33 | + # or | ||
| 34 | + project.accessrequests.delete(user_id) | ||
| 35 | + group.accessrequests.delete(user_id) | ||
| 36 | + # or | ||
| 37 | + ar.delete() | ||
| 38 | + # end delete | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,45 @@ | |||
| 1 | + ############### | ||
| 2 | + Access requests | ||
| 3 | + ############### | ||
| 4 | + | ||
| 5 | + Use :class:`~gitlab.objects.ProjectAccessRequest` and | ||
| 6 | + :class:`~gitlab.objects.GroupAccessRequest` objects to manipulate access | ||
| 7 | + requests for projects and groups. The | ||
| 8 | + :attr:`gitlab.Gitlab.project_accessrequests`, | ||
| 9 | + :attr:`gitlab.Gitlab.group_accessrequests`, :attr:`Project.accessrequests | ||
| 10 | + <gitlab.objects.Project.accessrequests>` and :attr:`Group.accessrequests | ||
| 11 | + <gitlab.objects.Group.accessrequests>` manager objects provide helper | ||
| 12 | + functions. | ||
| 13 | + | ||
| 14 | + Examples | ||
| 15 | + -------- | ||
| 16 | + | ||
| 17 | + List access requests from projects and groups: | ||
| 18 | + | ||
| 19 | + .. literalinclude:: access_requests.py | ||
| 20 | + :start-after: # list | ||
| 21 | + :end-before: # end list | ||
| 22 | + | ||
| 23 | + Get a single request: | ||
| 24 | + | ||
| 25 | + .. literalinclude:: access_requests.py | ||
| 26 | + :start-after: # get | ||
| 27 | + :end-before: # end get | ||
| 28 | + | ||
| 29 | + Create an access request: | ||
| 30 | + | ||
| 31 | + .. literalinclude:: access_requests.py | ||
| 32 | + :start-after: # create | ||
| 33 | + :end-before: # end create | ||
| 34 | + | ||
| 35 | + Approve an access request: | ||
| 36 | + | ||
| 37 | + .. literalinclude:: access_requests.py | ||
| 38 | + :start-after: # approve | ||
| 39 | + :end-before: # end approve | ||
| 40 | + | ||
| 41 | + Deny (delete) an access request: | ||
| 42 | + | ||
| 43 | + .. literalinclude:: access_requests.py | ||
| 44 | + :start-after: # delete | ||
| 45 | + :end-before: # end delete | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -70,6 +70,8 @@ class Gitlab(object): | |||
| 70 | 70 | user_keys (UserKeyManager): Manager for GitLab users' SSH keys. | |
| 71 | 71 | users (UserManager): Manager for GitLab users | |
| 72 | 72 | keys (DeployKeyManager): Manager for deploy keys | |
| 73 | + group_accessrequests (GroupAccessRequestManager): Manager for GitLab | ||
| 74 | + groups access requests | ||
| 73 | 75 | group_issues (GroupIssueManager): Manager for GitLab group issues | |
| 74 | 76 | group_projects (GroupProjectManager): Manager for GitLab group projects | |
| 75 | 77 | group_members (GroupMemberManager): Manager for GitLab group members | |
@@ -78,6 +80,8 @@ class Gitlab(object): | |||
| 78 | 80 | issues (IssueManager): Manager for GitLab issues | |
| 79 | 81 | licenses (LicenseManager): Manager for licenses | |
| 80 | 82 | namespaces (NamespaceManager): Manager for namespaces | |
| 83 | + project_accessrequests (ProjectAccessRequestManager): Manager for | ||
| 84 | + GitLab projects access requests | ||
| 81 | 85 | project_branches (ProjectBranchManager): Manager for GitLab projects | |
| 82 | 86 | branches | |
| 83 | 87 | project_builds (ProjectBuildManager): Manager for GitLab projects | |
@@ -159,6 +163,7 @@ def __init__(self, url, private_token=None, email=None, password=None, | |||
| 159 | 163 | self.user_keys = UserKeyManager(self) | |
| 160 | 164 | self.users = UserManager(self) | |
| 161 | 165 | self.keys = KeyManager(self) | |
| 166 | + self.group_accessrequests = GroupAccessRequestManager(self) | ||
| 162 | 167 | self.group_issues = GroupIssueManager(self) | |
| 163 | 168 | self.group_projects = GroupProjectManager(self) | |
| 164 | 169 | self.group_members = GroupMemberManager(self) | |
@@ -167,6 +172,7 @@ def __init__(self, url, private_token=None, email=None, password=None, | |||
| 167 | 172 | self.issues = IssueManager(self) | |
| 168 | 173 | self.licenses = LicenseManager(self) | |
| 169 | 174 | self.namespaces = NamespaceManager(self) | |
| 175 | + self.project_accessrequests = ProjectAccessRequestManager(self) | ||
| 170 | 176 | self.project_branches = ProjectBranchManager(self) | |
| 171 | 177 | self.project_builds = ProjectBuildManager(self) | |
| 172 | 178 | self.project_commits = ProjectCommitManager(self) | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -768,16 +768,47 @@ class GroupProjectManager(BaseManager): | |||
| 768 | 768 | obj_cls = GroupProject | |
| 769 | 769 | ||
| 770 | 770 | ||
| 771 | + class GroupAccessRequest(GitlabObject): | ||
| 772 | + _url = '/groups/%(group_id)s/access_requests' | ||
| 773 | + canGet = 'from_list' | ||
| 774 | + canUpdate = False | ||
| 775 | + | ||
| 776 | + def approve(self, access_level=gitlab.DEVELOPER_ACCESS, **kwargs): | ||
| 777 | + """Approve an access request. | ||
| 778 | + | ||
| 779 | + Attrs: | ||
| 780 | + access_level (int): The access level for the user. | ||
| 781 | + | ||
| 782 | + Raises: | ||
| 783 | + GitlabConnectionError: If the server cannot be reached. | ||
| 784 | + GitlabUpdateError: If the server fails to perform the request. | ||
| 785 | + """ | ||
| 786 | + | ||
| 787 | + url = ('/groups/%(group_id)s/access_requests/%(id)s/approve' % | ||
| 788 | + {'group_id': self.group_id, 'id': self.id}) | ||
| 789 | + data = {'access_level': access_level} | ||
| 790 | + r = self.gitlab._raw_put(url, data=data, **kwargs) | ||
| 791 | + raise_error_from_response(r, GitlabUpdateError, 201) | ||
| 792 | + self._set_from_dict(r.json()) | ||
| 793 | + | ||
| 794 | + | ||
| 795 | + class GroupAccessRequestManager(BaseManager): | ||
| 796 | + obj_cls = GroupAccessRequest | ||
| 797 | + | ||
| 798 | + | ||
| 771 | 799 | class Group(GitlabObject): | |
| 772 | 800 | _url = '/groups' | |
| 773 | 801 | _constructorTypes = {'projects': 'Project'} | |
| 774 | 802 | requiredCreateAttrs = ['name', 'path'] | |
| 775 | 803 | optionalCreateAttrs = ['description', 'visibility_level'] | |
| 776 | 804 | optionalUpdateAttrs = ['name', 'path', 'description', 'visibility_level'] | |
| 777 | 805 | shortPrintAttr = 'name' | |
| 778 | - managers = [('members', GroupMemberManager, [('group_id', 'id')]), | ||
| 779 | - ('projects', GroupProjectManager, [('group_id', 'id')]), | ||
| 780 | - ('issues', GroupIssueManager, [('group_id', 'id')])] | ||
| 806 | + managers = [ | ||
| 807 | + ('accessrequests', GroupAccessRequestManager, [('group_id', 'id')]), | ||
| 808 | + ('members', GroupMemberManager, [('group_id', 'id')]), | ||
| 809 | + ('projects', GroupProjectManager, [('group_id', 'id')]), | ||
| 810 | + ('issues', GroupIssueManager, [('group_id', 'id')]) | ||
| 811 | + ] | ||
| 781 | 812 | ||
| 782 | 813 | GUEST_ACCESS = gitlab.GUEST_ACCESS | |
| 783 | 814 | REPORTER_ACCESS = gitlab.REPORTER_ACCESS | |
@@ -1803,6 +1834,34 @@ def available(self, **kwargs): | |||
| 1803 | 1834 | return json.dumps(ProjectService._service_attrs.keys()) | |
| 1804 | 1835 | ||
| 1805 | 1836 | ||
| 1837 | + class ProjectAccessRequest(GitlabObject): | ||
| 1838 | + _url = '/projects/%(project_id)s/access_requests' | ||
| 1839 | + canGet = 'from_list' | ||
| 1840 | + canUpdate = False | ||
| 1841 | + | ||
| 1842 | + def approve(self, access_level=gitlab.DEVELOPER_ACCESS, **kwargs): | ||
| 1843 | + """Approve an access request. | ||
| 1844 | + | ||
| 1845 | + Attrs: | ||
| 1846 | + access_level (int): The access level for the user. | ||
| 1847 | + | ||
| 1848 | + Raises: | ||
| 1849 | + GitlabConnectionError: If the server cannot be reached. | ||
| 1850 | + GitlabUpdateError: If the server fails to perform the request. | ||
| 1851 | + """ | ||
| 1852 | + | ||
| 1853 | + url = ('/projects/%(project_id)s/access_requests/%(id)s/approve' % | ||
| 1854 | + {'project_id': self.project_id, 'id': self.id}) | ||
| 1855 | + data = {'access_level': access_level} | ||
| 1856 | + r = self.gitlab._raw_put(url, data=data, **kwargs) | ||
| 1857 | + raise_error_from_response(r, GitlabUpdateError, 201) | ||
| 1858 | + self._set_from_dict(r.json()) | ||
| 1859 | + | ||
| 1860 | + | ||
| 1861 | + class ProjectAccessRequestManager(BaseManager): | ||
| 1862 | + obj_cls = ProjectAccessRequest | ||
| 1863 | + | ||
| 1864 | + | ||
| 1806 | 1865 | class Project(GitlabObject): | |
| 1807 | 1866 | _url = '/projects' | |
| 1808 | 1867 | _constructorTypes = {'owner': 'User', 'namespace': 'Group'} | |
@@ -1822,6 +1881,8 @@ class Project(GitlabObject): | |||
| 1822 | 1881 | 'public_builds'] | |
| 1823 | 1882 | shortPrintAttr = 'path' | |
| 1824 | 1883 | managers = [ | |
| 1884 | + ('accessrequests', ProjectAccessRequestManager, | ||
| 1885 | + [('project_id', 'id')]), | ||
| 1825 | 1886 | ('branches', ProjectBranchManager, [('project_id', 'id')]), | |
| 1826 | 1887 | ('builds', ProjectBuildManager, [('project_id', 'id')]), | |
| 1827 | 1888 | ('commits', ProjectCommitManager, [('project_id', 'id')]), | |
| Back | FazBrowse Home | New Git URL |
0 commit comments