From 60486a0ce914b8ab8ddb7b06ae5609ec6e286a00 Mon Sep 17 00:00:00 2001 From: danieldietsch Date: Fri, 13 Nov 2020 18:20:33 +0100 Subject: [PATCH] add delete_time, fix some bugs --- gitea/gitea.py | 121 +++++++++++++++++++++++++++---------------------- 1 file changed, 66 insertions(+), 55 deletions(-) diff --git a/gitea/gitea.py b/gitea/gitea.py index 406394d..92797ac 100644 --- a/gitea/gitea.py +++ b/gitea/gitea.py @@ -2,7 +2,7 @@ import json import logging import uuid from datetime import datetime -from typing import List, Tuple, Dict, Sequence +from typing import List, Tuple, Dict, Sequence, Optional import requests from httpcache import CachingHTTPAdapter @@ -261,7 +261,7 @@ class Repository(GiteaApiObject): def get_issues(self) -> List["Issue"]: """Get all Issues of this Repository (open and closed)""" - return self.get_issues_state(Issue.open) + self.get_issues_state(Issue.closed) + return self.get_issues_state(Issue.OPENED) + self.get_issues_state(Issue.CLOSED) def get_commits(self) -> List["Commit"]: """Get all the Commits of this Repository.""" @@ -439,6 +439,7 @@ class Issue(GiteaApiObject): GET_TIME = """/repos/%s/%s/issues/%s/times""" # GET_COMMENTS = """/repos/%s/%s/issues/comments""" CREATE_ISSUE = """/repos/{owner}/{repo}/issues""" + DELETE_TIME = """/repos/{owner}/{repo}/issues/{index}/times/{id}""" OPENED = "closed" CLOSED = "open" @@ -478,7 +479,7 @@ class Issue(GiteaApiObject): result = gitea.requests_post(Issue.CREATE_ISSUE.format(**args), data=data) return Issue.parse_response(gitea, result) - def get_time(self, user: User) -> int: + def get_time_sum(self, user: User) -> int: results = self.gitea.requests_get( Issue.GET_TIME % (self.owner.username, self.repo, self.number) ) @@ -488,6 +489,16 @@ class Issue(GiteaApiObject): if result and result["user_id"] == user.id ) + def get_times(self) -> Optional[Dict]: + return self.gitea.requests_get( + Issue.GET_TIME % (self.owner.username, self.repo, self.number) + ) + + def delete_time(self, time_id: str): + self.gitea.requests_delete( + Issue.DELETE_TIME % (self.owner.username, self.repo, self.number, time_id) + ) + def get_comments(self) -> List[GiteaApiObject]: results = self.gitea.requests_get( Issue.GET_COMMENTS % (self.owner.username, self.repo) @@ -692,8 +703,8 @@ class Gitea: ) if request.status_code not in [200, 201]: if ( - "already exists" in request.text - or "e-mail already in use" in request.text + "already exists" in request.text + or "e-mail already in use" in request.text ): self.logger.warning(request.text) raise AlreadyExistsException() @@ -777,7 +788,7 @@ class Gitea: return self.requests_get(path) def post_org_repos( - self, name, description, private, auto_init, gitignores, license, readme, org + self, name, description, private, auto_init, gitignores, license, readme, org ): path = "/org/" + org + "/repos" return self.requests_post( @@ -809,15 +820,15 @@ class Gitea: return self.requests_get(path) def post_repos_migrate( - self, - clone_addr, - auth_username, - auth_password, - uid, - repo_name, - mirror, - private, - description, + self, + clone_addr, + auth_username, + auth_password, + uid, + repo_name, + mirror, + private, + description, ): path = "/repos/migrate" return self.requests_post( @@ -835,7 +846,7 @@ class Gitea: ) def post_user_repos( - self, name, description, private, auto_init, gitignores, license, readme + self, name, description, private, auto_init, gitignores, license, readme ): path = "/user/repos" return self.requests_post( @@ -880,14 +891,14 @@ class Gitea: return None def create_user( - self, - user_name: str, - email: str, - password: str, - login_name: str = None, - change_pw=True, - send_notify=True, - source_id=0, + self, + user_name: str, + email: str, + password: str, + login_name: str = None, + change_pw=True, + send_notify=True, + source_id=0, ): """ Create User. Throws: @@ -923,16 +934,16 @@ class Gitea: return user def create_repo( - self, - repoOwner, - repoName: str, - description: str = "", - private: bool = False, - autoInit=True, - gitignores: str = None, - license: str = None, - readme: str = "Default", - issue_labels: str = None, + self, + repoOwner, + repoName: str, + description: str = "", + private: bool = False, + autoInit=True, + gitignores: str = None, + license: str = None, + readme: str = "Default", + issue_labels: str = None, ): """ Create a Repository. Throws: @@ -964,13 +975,13 @@ class Gitea: return Repository.parse_response(self, result) def create_org( - self, - owner: User, - orgName: str, - description: str, - location="", - website="", - full_name="", + self, + owner: User, + orgName: str, + description: str, + location="", + website="", + full_name="", ): assert isinstance(owner, User) result = self.requests_post( @@ -998,20 +1009,20 @@ class Gitea: return Organization.parse_response(self, result) def create_team( - self, - org: Organization, - name: str, - description: str = "", - permission: str = "read", - units=( - "repo.code", - "repo.issues", - "repo.ext_issues", - "repo.wiki", - "repo.pulls", - "repo.releases", - "repo.ext_wiki", - ), + self, + org: Organization, + name: str, + description: str = "", + permission: str = "read", + units=( + "repo.code", + "repo.issues", + "repo.ext_issues", + "repo.wiki", + "repo.pulls", + "repo.releases", + "repo.ext_wiki", + ), ): """ Creates a Team.