feat: list no collaborator/commit repos

This commit is contained in:
张泊明518370910136 2021-09-28 15:35:27 +08:00
parent 5741675f10
commit 7fa19c3cb9
No known key found for this signature in database
GPG Key ID: FBEF5DE8B9F4C629
4 changed files with 51 additions and 7 deletions

View File

@ -32,7 +32,7 @@ def create_teams_and_repos_by_canvas_groups() -> None:
teapot.create_teams_and_repos_by_canvas_groups() teapot.create_teams_and_repos_by_canvas_groups()
@app.command("get-public-keys", help="get all public keys on gitea") @app.command("get-public-keys", help="list all public keys on gitea")
def get_public_key_of_all_canvas_students() -> None: def get_public_key_of_all_canvas_students() -> None:
echo("\n".join(teapot.get_public_key_of_all_canvas_students())) echo("\n".join(teapot.get_public_key_of_all_canvas_students()))
@ -53,7 +53,7 @@ def check_exist_issue_by_title(repo_names: List[str], title: str) -> None:
@app.command( @app.command(
"get-releases", "checkout-releases",
help="checkout git repo to git tag fetched from gitea by release name, with due date", help="checkout git repo to git tag fetched from gitea by release name, with due date",
) )
def checkout_to_repos_by_release_name( def checkout_to_repos_by_release_name(
@ -74,6 +74,16 @@ def archieve_all_repos() -> None:
teapot.archieve_all_repos() teapot.archieve_all_repos()
@app.command("get-no-collaborator-repos", help="list all repos with no collaborators")
def get_no_collaborator_repos() -> None:
teapot.get_no_collaborator_repos()
@app.command("get-no-commit-repos", help="list all repos with no commit")
def get_no_commit_repos() -> None:
teapot.get_no_commit_repos()
if __name__ == "__main__": if __name__ == "__main__":
try: try:
app() app()

View File

@ -122,6 +122,12 @@ class Teapot:
def archieve_all_repos(self) -> None: def archieve_all_repos(self) -> None:
self.gitea.archieve_all_repos() self.gitea.archieve_all_repos()
def get_no_collaborator_repos(self) -> None:
self.gitea.get_no_collaborator_repos()
def get_no_commit_repos(self) -> None:
self.gitea.get_no_commit_repos()
if __name__ == "__main__": if __name__ == "__main__":
teapot = Teapot() teapot = Teapot()

View File

@ -16,7 +16,7 @@ class Canvas:
self.course = self.canvas.get_course(course_id) self.course = self.canvas.get_course(course_id)
logger.info(f"Canvas course loaded. {self.course}") logger.info(f"Canvas course loaded. {self.course}")
self.students = self.course.get_users( self.students = self.course.get_users(
enrollment_type=["student"], include=["email"] enrollment_type=["student", "observer"], include=["email"]
) )
for attr in ["sis_login_id", "sortable_name", "name"]: for attr in ["sis_login_id", "sortable_name", "name"]:
if not hasattr(self.students[0], attr): if not hasattr(self.students[0], attr):

View File

@ -124,11 +124,13 @@ class Gitea:
repo = self.organization_api.create_org_repo( repo = self.organization_api.create_org_repo(
self.org_name, body=body self.org_name, body=body
) )
logger.info(f"Personal repo {repo_name} for {student} created") logger.info(
f"Personal repo {self.org_name}/{repo_name} for {student} created"
)
except ApiException as e: except ApiException as e:
if e.status == 409: if e.status == 409:
logger.warning( logger.warning(
f"Personal repo {repo_name} for {student} already exists" f"Personal repo {self.org_name}/{repo_name} for {student} already exists"
) )
else: else:
raise (e) raise (e)
@ -230,6 +232,33 @@ class Gitea:
for data in list_all(self.organization_api.org_list_repos, self.org_name) for data in list_all(self.organization_api.org_list_repos, self.org_name)
] ]
def get_no_collaborator_repos(self) -> List[str]:
res = []
for data in list_all(self.organization_api.org_list_repos, self.org_name):
collaborators = self.repository_api.repo_list_collaborators(
self.org_name, data.name
)
if collaborators:
continue
logger.info(f"{self.org_name}/{data.name} has no collaborators")
res.append(data.name)
return res
def get_no_commit_repos(self) -> List[str]:
res = []
for data in list_all(self.organization_api.org_list_repos, self.org_name):
try:
commits = self.repository_api.repo_get_all_commits(
self.org_name, data.name
)
except ApiException as e:
if e.status == 409:
logger.info(f"{self.org_name}/{data.name} has no commits")
res.append(data.name)
else:
raise (e)
return res
def create_issue( def create_issue(
self, self,
repo_name: str, repo_name: str,
@ -280,5 +309,4 @@ class Gitea:
if __name__ == "__main__": if __name__ == "__main__":
gitea = Gitea() gitea = Gitea()
res = gitea.get_all_repo_names() res = gitea.get_no_commit_repos()
print("\n".join(res))