feat: create result issue

This commit is contained in:
张泊明518370910136 2024-09-14 17:27:32 -04:00
parent a686b5df5a
commit 6303d31b1b
GPG Key ID: CA088E6D9284F870
3 changed files with 44 additions and 6 deletions

View File

@ -124,3 +124,7 @@ upload assignment grades to canvas from grade file (GRADE.txt by default), read
## License ## License
MIT MIT
## Compile
- case 0: 0

View File

@ -295,6 +295,25 @@ def joj3_failed_table(
) )
@app.command(
"joj3-create-result-issue",
help="create result issue on gitea",
)
def joj3_create_result_issue(
env_path: str = Argument("", help="path to .env file"),
scorefile_path: str = Argument(
"", help="path to score json file generated by JOJ3"
),
submitter_repo_name: str = Argument(
"",
help="repository's name of the submitter",
),
) -> None:
set_settings(Settings(_env_file=env_path))
title, comment = joj3.generate_title_and_comment(scorefile_path)
tea.pot.gitea.create_issue(submitter_repo_name, title, comment, False)
if __name__ == "__main__": if __name__ == "__main__":
try: try:
app() app()

View File

@ -1,9 +1,10 @@
import bisect import bisect
import csv import csv
import enum
import json import json
import os import os
from datetime import datetime from datetime import datetime
from typing import Any, Dict, List from typing import Any, Dict, List, Tuple
from joint_teapot.utils.logger import logger from joint_teapot.utils.logger import logger
@ -112,10 +113,10 @@ def update_failed_table_from_score_file(
) -> None: ) -> None:
# get info from score file # get info from score file
with open(score_file_path) as json_file: with open(score_file_path) as json_file:
scorefile: List[Dict[str, Any]] = json.load(json_file) stages: List[Dict[str, Any]] = json.load(json_file)
failed_name = "" failed_name = ""
for stage in scorefile: for stage in stages:
if stage["force_quit"] == True: if stage["force_quit"] == True:
failed_name = stage["name"] failed_name = stage["name"]
break break
@ -163,6 +164,20 @@ def generate_failed_table(
write_failed_table_into_file(data, table_file_path) write_failed_table_into_file(data, table_file_path)
def generate_comment(score_file_path: str) -> str: def generate_title_and_comment(score_file_path: str) -> Tuple[str, str]:
# TODO with open(score_file_path) as json_file:
return "" stages: List[Dict[str, Any]] = json.load(json_file)
total_score = 0
comment = ""
for stage in stages:
comment += f"## {stage['name']}\n"
for i, result in enumerate(stage["results"]):
comment += f"### case {i}\n"
comment += f"score: {result['score']}\n"
comment += f"comment: {result['comment']}\n"
total_score += result["score"]
comment += "\n"
now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
title = f"JOJ3 Result {now} - Total Score: {total_score}"
return title, comment