pull/3/head
danieldietsch 2020-11-23 17:50:32 +01:00
rodzic d53a8496cd
commit 456f580a8b
1 zmienionych plików z 25 dodań i 15 usunięć

Wyświetl plik

@ -107,7 +107,6 @@ class Organization(GiteaApiObject):
class User(GiteaApiObject): class User(GiteaApiObject):
GET_API_OBJECT = """/users/{name}""" # <org> GET_API_OBJECT = """/users/{name}""" # <org>
USER_MAIL = """/user/emails?sudo=%s""" # <name> USER_MAIL = """/user/emails?sudo=%s""" # <name>
USER_REPOS_REQUEST = """/users/%s/repos""" # <org>
USER_PATCH = """/admin/users/%s""" # <username> USER_PATCH = """/admin/users/%s""" # <username>
ADMIN_DELETE_USER = """/admin/users/%s""" # <username> ADMIN_DELETE_USER = """/admin/users/%s""" # <username>
ADMIN_EDIT_USER = """/admin/users/{name}""" # <username> ADMIN_EDIT_USER = """/admin/users/{name}""" # <username>
@ -149,20 +148,22 @@ class User(GiteaApiObject):
values = self.get_dirty_fields() values = self.get_dirty_fields()
values.update( values.update(
{"email": self.email} {"email": self.email}
) # this requrest must always contain the email for identifying users ) # this request must always contain the email for identifying users
args = {"name": self.username, "email": self.email} args = {"name": self.username, "email": self.email}
self.gitea.requests_patch(User.ADMIN_EDIT_USER.format(**args), data=values) self.gitea.requests_patch(User.ADMIN_EDIT_USER.format(**args), data=values)
self.dirty_fields = {} self.dirty_fields = {}
def get_accessible_repositories(self) -> List[GiteaApiObject]: def get_repositories(self) -> List["Repository"]:
""" Get all Repositories owned by this User.""" """ Get all Repositories owned by this User."""
results = self.gitea.requests_get("/user/repos") url = f"/users/{self.username}/repos"
results = self.gitea.requests_get(url)
return [Repository.parse_response(self.gitea, result) for result in results] return [Repository.parse_response(self.gitea, result) for result in results]
def get_repositories(self) -> List[GiteaApiObject]: def get_repositories(self) -> List[Organization]:
""" Get all Repositories owned by this User.""" """ Get all Organizations this user is a member of."""
results = self.gitea.requests_get(User.USER_REPOS_REQUEST % self.username) url = f"/users/{self.username}/orgs"
return [Repository.parse_response(self.gitea, result) for result in results] results = self.gitea.requests_get(url)
return [Organization.parse_response(self.gitea, result) for result in results]
def __request_emails(self): def __request_emails(self):
result = self.gitea.requests_get(User.USER_MAIL % self.login) result = self.gitea.requests_get(User.USER_MAIL % self.login)
@ -208,7 +209,6 @@ class Repository(GiteaApiObject):
REPO_DELETE = """/repos/%s/%s""" # <owner>, <reponame> REPO_DELETE = """/repos/%s/%s""" # <owner>, <reponame>
REPO_TIMES = """/repos/%s/%s/times""" # <owner>, <reponame> REPO_TIMES = """/repos/%s/%s/times""" # <owner>, <reponame>
REPO_USER_TIME = """/repos/%s/%s/times/%s""" # <owner>, <reponame>, <username> REPO_USER_TIME = """/repos/%s/%s/times/%s""" # <owner>, <reponame>, <username>
REPO_GET_COLLABORATOR = "/repos/{owner}/{repo}/collaborators" # <owner>, <reponame>
REPO_COMMITS = "/repos/%s/%s/commits" # <owner>, <reponame> REPO_COMMITS = "/repos/%s/%s/commits" # <owner>, <reponame>
def __init__(self, gitea, id: int): def __init__(self, gitea, id: int):
@ -356,11 +356,8 @@ class Repository(GiteaApiObject):
return False return False
def get_users_with_access(self) -> Sequence[User]: def get_users_with_access(self) -> Sequence[User]:
response = self.gitea.requests_get( url = f"/repos/{self.owner.username}/{self.name}/collaborators"
Repository.REPO_GET_COLLABORATOR.format( response = self.gitea.requests_get(url)
owner=self.owner.username, repo=self.name
)
)
collabs = [User.parse_response(self.gitea, user) for user in response] collabs = [User.parse_response(self.gitea, user) for user in response]
if isinstance(self.owner, User): if isinstance(self.owner, User):
return collabs + [self.owner] return collabs + [self.owner]
@ -373,6 +370,10 @@ class Repository(GiteaApiObject):
collabs += team.get_members() collabs += team.get_members()
return collabs return collabs
def remove_collaborator(self, user_name: str):
url = f"/repos/{self.owner.username}/{self.name}/collaborators/{user_name}"
self.gitea.requests_delete(url)
def delete(self): def delete(self):
self.gitea.requests_delete( self.gitea.requests_delete(
Repository.REPO_DELETE % (self.owner.username, self.name) Repository.REPO_DELETE % (self.owner.username, self.name)
@ -577,6 +578,10 @@ class Team(GiteaApiObject):
self.gitea.requests_delete(Team.TEAM_DELETE % self.id) self.gitea.requests_delete(Team.TEAM_DELETE % self.id)
self.deleted = True self.deleted = True
def remove_team_member(self, user_name: str):
url = f"/teams/{self.id}/members/{user_name}"
self.gitea.requests_delete(url)
class Util: class Util:
@staticmethod @staticmethod
@ -789,6 +794,11 @@ class Gitea:
path = "/repos/" + username + "/" + reponame + "/subscription" path = "/repos/" + username + "/" + reponame + "/subscription"
return self.requests_get(path) return self.requests_get(path)
def get_accessible_repositories(self) -> List[GiteaApiObject]:
""" Get all Repositories accessible by the logged in User."""
results = self.gitea.requests_get("/user/repos")
return [Repository.parse_response(self.gitea, result) for result in results]
def get_users_following(self, username): def get_users_following(self, username):
path = "/users/" + username + "/following" path = "/users/" + username + "/following"
return self.requests_get(path) return self.requests_get(path)
@ -894,7 +904,7 @@ class Gitea:
result = self.requests_get(Gitea.GITEA_VERSION) result = self.requests_get(Gitea.GITEA_VERSION)
return result["version"] return result["version"]
def get_users(self): def get_users(self) -> List[User]:
results = self.requests_get(Gitea.GET_USERS_ADMIN) results = self.requests_get(Gitea.GET_USERS_ADMIN)
return [User.parse_response(self, result) for result in results] return [User.parse_response(self, result) for result in results]