diff --git a/example.py b/example.py index 1477f64..5ff617e 100644 --- a/example.py +++ b/example.py @@ -10,6 +10,7 @@ print("API-Token belongs to user: " + gitea.get_user().username) org = Organization(gitea, "an-org") print(org.username) org.set_value({"location": "a-place"}) +print([user.username for user in org.get_members()]) ## try getting an organization that does not exists try: org = Organization(gitea, "non-existent-org") diff --git a/gitea/Gitea.py b/gitea/Gitea.py index 61a666c..773ebe4 100644 --- a/gitea/Gitea.py +++ b/gitea/Gitea.py @@ -9,6 +9,7 @@ class Organization: ORG_REPOS_REQUEST = """/orgs/%s/repos""" # ORG_TEAMS_REQUEST = """/orgs/%s/teams""" # ORG_PATCH = """/orgs/%s""" # + ORG_GET_MEMBERS = """/orgs/%s/members""" # def __init__(self, gitea, orgName : str, initJson: json = None): self.gitea = gitea @@ -23,6 +24,10 @@ class Organization: results = self.gitea.requests_get(Organization.ORG_TEAMS_REQUEST % self.username) return [Team(self, result["name"], initJson=result) for result in results] + def get_members(self): + results = self.gitea.requests_get(Organization.ORG_GET_MEMBERS % self.username) + return [User(self, result["username"], initJson=result) for result in results] + def __initialize_org(self, orgName: str, result) -> None: if not result: result = self.gitea.requests_get(Organization.ORG_REQUEST%orgName) @@ -47,7 +52,7 @@ class User: def get_repositories(self): result = self.gitea.requests_get(User.USER_REPOS_REQUEST%self.username) - return [Repository(self.gitea, self.username, r["name"]) for r in result] + return [Repository(self.gitea, self, r["name"]) for r in result] def __initialize_user(self, userName: str, result) -> None: if not result: @@ -62,7 +67,7 @@ class User: self.__initialize_user(self.username, result) def delete(self): - result = self.gitea.requests_delete(User.ADMIN_DELETE_USER%self.username) + self.gitea.requests_delete(User.ADMIN_DELETE_USER%self.username) class Repository: @@ -124,6 +129,7 @@ class Gitea(): ADMIN_REPO_CREATE = """/admin/users/%s/repos""" # GITEA_VERSION = """/version""" GET_USER = """/user""" + CREATE_ORG = """/admin/users/%s/orgs""" # """ @:param url: url of Gitea server without .../api/ @@ -170,10 +176,6 @@ class Gitea(): raise Exception(("Received status code: %s (%s)"%(request.status_code, request.url))) return self.parse_result(request) - def get_users_gpg_keys(self, username): - path = '/users/' + username + '/gpg_keys' - return self.requests_get(path) - def get_users_search(self, ): path = '/users/search' return self.requests_get(path) @@ -182,96 +184,6 @@ class Gitea(): path = '/repos/' + username + '/' + reponame return self.requests.delete(path) - def post_repos__mirror_sync(self, username, reponame): - path = '/repos/' + username + '/' + reponame + '/mirror-sync' - return self.requests_post(path, data={}) - - def post_admin_users_orgs(self, username, full_name, description, website, location): - path = '/admin/users/' + username + '/orgs' - return self.requests_post(path, data={'username': username, 'full_name': full_name, 'description': description, - 'website': website, 'location': location}) - - def post_user_gpg_keys(self, armored_public_key): - path = '/user/gpg_keys' - return self.requests_post(path, data={'armored_public_key': armored_public_key}) - - def get_user_gpg_keys_all(self): - path = '/user/gpg_keys' - return self.requests_get(path) - - def get_user_subscriptions(self, ): - path = '/user/subscriptions' - return self.requests_get(path) - - def post_markdown(self, Text, Mode, Context, Wiki): - path = '/markdown' - return self.requests_post(path, data={'Text': Text, 'Mode': Mode, 'Context': Context, 'Wiki': Wiki}) - - def patch_repos__hooks(self, config, events, active, username, reponame, id): - path = '/repos/' + username + '/' + reponame + '/hooks/' + id - return self.requests.patch(path) - - def delete_repos_hooks(self, username, reponame, id): - path = '/repos/' + username + '/' + reponame + '/hooks/' + id - return self.requests.delete(path) - - - def get_users_keys(self, username): - path = '/users/' + username + '/keys' - return self.requests_get(path) - - def put_user_following(self, username): - path = '/user/following/' + username - return self.requests.put(path) - - def delete_user_following(self, username): - path = '/user/following/' + username - return self.requests.delete(path) - - def get_user_following(self, username): - path = '/user/following/' + username - return self.requests_get(path) - - def post_markdown_raw(self, ): - path = '/markdown/raw' - return self.requests_post(path, data={}) - - def get_users_subscriptions(self, username): - path = '/users/' + username + '/subscriptions' - return self.requests_get(path) - - def delete_user_keys(self, id): - path = '/user/keys/' + id - return self.requests.delete(path) - - def get_user_keys(self, id): - path = '/user/keys/' + id - return self.requests_get(path) - - def post_orgs_hooks(self, type, config, events, active, orgname): - path = '/orgs/' + orgname + '/hooks/' - return self.requests_post(path, data={'type': type, 'config': config, 'events': events, 'active': active}) - - def get_orgs_members_all(self, orgname): - path = '/orgs/' + orgname + '/members' - return self.requests_get(path) - - def post_admin_users_keys(self, title, key, username): - path = '/admin/users/' + username + '/keys' - return self.requests_post(path, data={'title': title, 'key': key}) - - def get_users_tokens(self, username): - path = '/users/' + username + '/tokens' - return self.requests_get(path) - - def get_orgs_hooks_all(self, orgname): - path = '/orgs/' + orgname + '/hooks' - return self.requests_get(path) - - def get_users(self, username): - path = '/users/' + username - return self.requests_get(path) - def get_orgs_public_members_all(self, orgname): path = '/orgs/' + orgname + '/public_members' return self.requests_get(path) @@ -284,10 +196,6 @@ class Gitea(): path = '/repos/' + owner + '/' + repo + '/forks' return self.requests_get(path) - def get_repositories(self, id): - path = '/repositories/' + id - return self.requests_get(path) - def put_repos__subscription(self, username, reponame): path = '/repos/' + username + '/' + reponame + '/subscription' return self.requests.put(path) @@ -330,10 +238,6 @@ class Gitea(): path = '/orgs/' + orgname + '/members/' + username return self.requests.delete(path) - def get_orgs_members(self, orgname, username): - path = '/orgs/' + orgname + '/members/' + username - return self.requests_get(path) - def post_repos__hooks(self, type, config, events, active, reponame, username): path = '/repos/' + username + '/' + reponame + '/hooks' return self.requests_post(path, data={'type': type, 'config': config, 'events': events, 'active': active}) @@ -355,14 +259,6 @@ class Gitea(): 'auto_init': auto_init, 'gitignores': gitignores, 'license': license, 'readme': readme}) - def delete_user_gpg_keys(self, id): - path = '/user/gpg_keys/' + id - return self.requests.delete(path) - - def get_user_gpg_keys(self, id): - path = '/user/gpg_keys/' + id - return self.requests_get(path) - # # # def get_user(self, ): @@ -395,3 +291,17 @@ class Gitea(): logging.error(result["message"]) raise Exception("Repository not created... (gitea: %s)"%(result["message"])) return Repository(self, repoOwner, repoName, result) + + def create_org(self, owner: User, orgName: str, description: str, website = "", location = ""): + assert (isinstance(owner, User)) + result = self.requests_post(Gitea.CREATE_ORG%owner.username, + data={'username': orgName, 'full_name': orgName, 'description': description, + 'website': website, 'location': location}) + if "id" in result: + logging.info("Successfully created Repository %s "%(result["name"])) + else: + logging.error(result["message"]) + raise Exception("Repository not created... (gitea: %s)"%(result["message"])) + return Organization(owner, orgName, initJson=result) + +