mirror of
https://github.com/status-im/PyGithub.git
synced 2026-08-31 10:51:14 +00:00
Add "get_repo_permission" to Team class (#1416)
* Add "get_repo_permission" to Team class * second attempt: - accept repo name or repo object - return github.Permissions.Permissions object - try and following CONTRIBUTING.md better * add missing import to tests patch replay data with permission data * assert a specific permission rather than just the type Fixes #1415
This commit is contained in:
@@ -120,3 +120,6 @@ issueTimelineEventsPreview = "application/vnd.github.mockingbird-preview"
|
||||
|
||||
# https://developer.github.com/changes/2019-02-14-draft-pull-requests/
|
||||
draftPullRequestPreview = "application/vnd.github.shadow-cat-preview+json"
|
||||
|
||||
# https://developer.github.com/v3/teams/#check-if-a-team-manages-a-repository
|
||||
teamRepositoryPermissions = "application/vnd.github.v3.repository+json"
|
||||
|
||||
@@ -47,6 +47,7 @@ import github.Organization
|
||||
import github.PaginatedList
|
||||
import github.Repository
|
||||
import github.TeamDiscussion
|
||||
from github.GithubException import UnknownObjectException
|
||||
|
||||
from . import Consts
|
||||
|
||||
@@ -210,6 +211,29 @@ class Team(github.GithubObject.CompletableGithubObject):
|
||||
"PUT", self.url + "/repos/" + repo._identity
|
||||
)
|
||||
|
||||
def get_repo_permission(self, repo):
|
||||
"""
|
||||
:calls: `GET /teams/:id/repos/:org/:repo <http://developer.github.com/v3/orgs/teams>`_
|
||||
:param repo: string or :class:`github.Repository.Repository`
|
||||
:rtype: None or :class:`github.Permissions.Permissions`
|
||||
"""
|
||||
assert isinstance(repo, github.Repository.Repository) or isinstance(
|
||||
repo, str
|
||||
), repo
|
||||
if isinstance(repo, github.Repository.Repository):
|
||||
repo = repo._identity
|
||||
try:
|
||||
headers, data = self._requester.requestJsonAndCheck(
|
||||
"GET",
|
||||
self.url + "/repos/" + repo,
|
||||
headers={"Accept": Consts.teamRepositoryPermissions},
|
||||
)
|
||||
return github.Permissions.Permissions(
|
||||
self._requester, headers, data["permissions"], completed=True
|
||||
)
|
||||
except UnknownObjectException:
|
||||
return None
|
||||
|
||||
def set_repo_permission(self, repo, permission):
|
||||
"""
|
||||
:calls: `PUT /teams/:id/repos/:org/:repo <http://developer.github.com/v3/orgs/teams>`_
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -114,11 +114,14 @@ class Team(Framework.TestCase):
|
||||
repo = self.org.get_repo("FatherBeaver")
|
||||
self.assertListKeyEqual(self.team.get_repos(), None, [])
|
||||
self.assertFalse(self.team.has_in_repos(repo))
|
||||
self.assertIsNone(self.team.get_repo_permission(repo))
|
||||
self.team.add_to_repos(repo)
|
||||
self.assertListKeyEqual(
|
||||
self.team.get_repos(), lambda r: r.name, ["FatherBeaver"]
|
||||
)
|
||||
self.assertTrue(self.team.has_in_repos(repo))
|
||||
permissions = self.team.get_repo_permission(repo)
|
||||
self.assertTrue(permissions.pull)
|
||||
self.team.remove_from_repos(repo)
|
||||
self.assertListKeyEqual(self.team.get_repos(), None, [])
|
||||
self.assertFalse(self.team.has_in_repos(repo))
|
||||
|
||||
Reference in New Issue
Block a user