fix: canvas score file

This commit is contained in:
张泊明518370910136 2021-10-14 20:27:39 +08:00
parent 48e67985d2
commit e438f02b23
No known key found for this signature in database
GPG Key ID: FBEF5DE8B9F4C629
4 changed files with 16 additions and 9 deletions

View File

@ -6,6 +6,7 @@ from joint_teapot import Teapot, logger
class MyTeapot(Teapot):
def ve482p1(self) -> None:
fault_repos = []
for repo_name in self.gitea.get_all_repo_names():
if not repo_name.endswith("p1"):
continue
@ -14,7 +15,7 @@ class MyTeapot(Teapot):
if succeed:
contain_c_file = False
contain_readme_file = False
for fn in glob.glob(f"{self.git.repos_dir}/{repo_name}/*.*"):
for fn in glob.glob(f"{self.git.repos_dir}/{repo_name}/*"):
basename = ntpath.basename(fn)
if basename.endswith(".c"):
contain_c_file = True
@ -44,6 +45,8 @@ class MyTeapot(Teapot):
"title": "p1 submission pre-check failed",
},
)
fault_repos.append(repo_name)
logger.info(f"{len(fault_repos)} fault repo(s): {fault_repos}")
if __name__ == "__main__":

View File

@ -118,6 +118,7 @@ class Teapot:
release = first(repo_releases, lambda item: item.name == release_name)
if release is None or release.created_at.replace(tzinfo=None) >= due:
return False
# TODO: checkout by commit hash to prevent re-create tag
self.git.repo_clean_and_checkout(repo_name, f"tags/{release.tag_name}")
logger.info(
f"{self.gitea.org_name}/{repo_name} checkout to "

View File

@ -49,6 +49,8 @@ class Canvas:
new_path = os.path.join(dir, v)
if not os.path.exists(new_path):
os.mkdir(new_path)
if create_score_file:
open(os.path.join(new_path, self.score_filename), mode="w")
for path in glob(os.path.join(dir, "*")):
file_name = os.path.basename(path)
if "_" not in file_name:
@ -68,8 +70,6 @@ class Canvas:
os.remove(path)
except PatoolError:
os.rename(path, os.path.join(target_dir, file_name))
if create_score_file:
open(os.path.join(target_dir, self.score_filename), mode="w")
def upload_assignment_scores(self, dir: str, assignment_name: str) -> None:
assignment = first(self.assignments, lambda x: x.name == assignment_name)
@ -88,7 +88,9 @@ class Canvas:
"submission": {"posted_grade": float(score)},
"comment": {"text_comment": "".join(comments)},
}
logger.info(f"{assignment} {student} {data.__repr__()}")
logger.info(
f"Uploading grade for {assignment} {student}: {data.__repr__()}"
)
submission.edit(**data)

View File

@ -351,13 +351,14 @@ class Gitea:
return False
def close_all_issues(self) -> None:
for repo in list_all(self.organization_api.org_list_repos, self.org_name):
for issue in list_all(
self.issue_api.issue_list_issues, self.org_name, repo.name
):
for repo_name in self.get_all_repo_names():
issues = list_all(
self.issue_api.issue_list_issues, self.org_name, repo_name
)
for issue in issues:
if issue.state != "closed":
self.issue_api.issue_edit_issue(
self.org_name, repo.name, issue.number, body={"state": "closed"}
self.org_name, repo_name, issue.number, body={"state": "closed"}
)
def archieve_all_repos(self) -> None: