diff --git a/joint_teapot/workers/git.py b/joint_teapot/workers/git.py index da3704b..fdcdafc 100644 --- a/joint_teapot/workers/git.py +++ b/joint_teapot/workers/git.py @@ -14,19 +14,19 @@ class Git: raise Exception(f"{repos_dir} does not exist! Create it first.") self.repos_dir = repos_dir - def clone_repo(self, repo_name: str) -> Repo: + def clone_repo(self, repo_name: str, branch: str = "master") -> Repo: repo_dir = os.path.join(self.repos_dir, repo_name) return Repo.clone_from( - f"https://focs.ji.sjtu.edu.cn/git/{self.org_name}/{repo_name}", + f"ssh://git@focs.ji.sjtu.edu.cn:2222/{self.org_name}/{repo_name}.git", repo_dir, - branch="master", + branch=branch, ) def get_repo(self, repo_name: str) -> Repo: repo_dir = os.path.join(self.repos_dir, repo_name) if os.path.exists(repo_dir): return Repo(repo_dir) - return self.clone_repo(repo_dir) + return self.clone_repo(repo_name) def repo_clean_and_checkout(self, repo_name: str, checkout_dest: str) -> str: repo_dir = os.path.join(self.repos_dir, repo_name) diff --git a/joint_teapot/workers/gitea.py b/joint_teapot/workers/gitea.py index 7028ca1..857413d 100644 --- a/joint_teapot/workers/gitea.py +++ b/joint_teapot/workers/gitea.py @@ -46,6 +46,8 @@ class Gitea: @lru_cache def __get_team_id_by_name(self, name: str) -> int: res = self.organization_api.team_search(self.org_name, q=str(name), limit=1) + if len(res["data"]) == 0: + raise Exception("Team not found by name") return res["data"][0]["id"] @lru_cache @@ -75,7 +77,7 @@ class Gitea: if repo_name is None: continue repo_names.append(repo_name) - repo: Dict[str, Any] = self.organization_api.create_org_repo( + repo = self.organization_api.create_org_repo( self.org_name, body={ "auto_init": False, @@ -87,9 +89,7 @@ class Gitea: }, ) self.repository_api.repo_add_collaborator( - self.org_name, - repo["name"], - self.__get_username_by_canvas_student(student), + self.org_name, repo.name, self.__get_username_by_canvas_student(student) ) return repo_names @@ -109,7 +109,7 @@ class Gitea: if team_name is None or repo_name is None: continue repo_names.append(repo_name) - team: Dict[str, Any] = self.organization_api.org_create_team( + team = self.organization_api.org_create_team( self.org_name, body={ "can_create_org_repo": False, @@ -128,7 +128,7 @@ class Gitea: ], }, ) - repo: Dict[str, Any] = self.organization_api.create_org_repo( + repo = self.organization_api.create_org_repo( self.org_name, body={ "auto_init": False, @@ -140,7 +140,7 @@ class Gitea: }, ) self.organization_api.org_add_team_repository( - team["id"], self.org_name, repo_name + team.id, self.org_name, repo_name ) membership: GroupMembership for membership in group.get_memberships(): @@ -150,7 +150,7 @@ class Gitea: f"student with user_id {membership.user_id} not found" ) username = self.__get_username_by_canvas_student(student) - self.organization_api.org_add_team_member(team["id"]) + self.organization_api.org_add_team_member(team.id) self.repository_api.repo_add_collaborator( self.org_name, repo_name, username ) @@ -172,7 +172,7 @@ class Gitea: def get_all_repo_names(self) -> List[str]: return [ - data["name"] for data in self.organization_api.org_list_repos(self.org_name) + data.name for data in self.organization_api.org_list_repos(self.org_name) ] def create_issue( @@ -185,7 +185,7 @@ class Gitea: assignees = [] if assign_every_collaborators: assignees = [ - item["username"] + item.username for item in self.repository_api.repo_list_collaborators( self.org_name, repo_name )