Example #1
0
def clone():
    grading_directory = get_grading_directory(ensure_exists=False)

    if path.exists(grading_directory):
        print(f"{grading_directory} already exists. Please delete it or resume grading.")
    else:
        mkdir(grading_directory)
        student_list = fetch_student_list()
        write_student_list(grading_directory, student_list)
        clone_repos(grading_directory, student_list)
Example #2
0
def assemble(options, args):
    grading_directory = get_grading_directory()
    assignment_name = get_assignment_short_name()

    grades = {}

    teams = get_teams_list(grading_directory)
    for team in teams:
        print(f"Sending grades to team {team}...")

        commit_and_merge(grading_directory, team, assignment_name)
        grades[team] = read_grade(grading_directory, team, assignment_name)

    write_grades_file(grading_directory, grades)
Example #3
0
def grade(options, args):
    grading_directory = get_grading_directory()

    partial_grading_text = generate_partial_grading_file()
    assignment_name = get_assignment_short_name()
    subdirectories = get_assignment_subdirectories()
    deadline = get_assignment_deadline()

    teams = get_teams_list(grading_directory)
    for team in teams:
        print(f"Grading team {team}...")

        repo_path = f"{grading_directory}/{team}"
        create_branch(repo_path, deadline, generate_grading_name(assignment_name)).checkout()

        grading_text = partial_grading_text.replace("__TEAM_NUMBER__", team)
        grading_text += get_commit_info(repo_path)
        grading_text += get_useless_files(repo_path)
        grading_text += get_make_output(repo_path, subdirectories)

        grade_file_path = f"{repo_path}/{generate_grading_file_name(assignment_name)}"
        with open(grade_file_path, 'w') as f:
            f.write(grading_text)