def create_grading_repos(config, course, assignment, teams_registrations, staging_only): repos = [] teams = sorted(list(teams_registrations.keys()), key=operator.attrgetter("team_id")) for team in teams: registration = teams_registrations[team] repo = GradingGitRepo.get_grading_repo(config, course, team, registration) if repo is None: print(("Creating grading repo for %s... " % team.team_id), end=' ') repo = GradingGitRepo.create_grading_repo(config, course, team, registration, staging_only) repo.sync() repos.append(repo) print("done") else: print("Grading repo for %s already exists" % team.team_id) return repos
def instructor_grading_create_grading_repos(ctx, course, assignment_id, all_teams, only, master): assignment = get_assignment_or_exit(ctx, course, assignment_id) teams_registrations = get_teams_registrations( course, assignment, only=only, only_ready_for_grading=not all_teams) if len(teams_registrations) == 0: ctx.exit(CHISUBMIT_FAIL) teams = sorted(teams_registrations.keys(), key=operator.attrgetter("team_id")) for team in teams: registration = teams_registrations[team] repo = GradingGitRepo.get_grading_repo(ctx.obj['config'], course, team, registration) if repo is None: print("%40s -- Creating grading repo... " % team.team_id), repo = GradingGitRepo.create_grading_repo(ctx.obj['config'], course, team, registration, staging_only=not master) repo.sync() if registration.final_submission is not None: if repo.has_grading_branch_staging(): gradingrepo_pull_grading_branch(ctx.obj['config'], course, team, registration) print "done" else: if master: repo.create_grading_branch() print "done (and created grading branch)" else: print "done (warning: could not pull grading branch; it does not exist)" else: print "done (note: has not submitted yet)" else: print("%40s -- Updating grading repo... " % team.team_id), if repo.has_grading_branch_staging(): gradingrepo_pull_grading_branch(ctx.obj['config'], course, team, registration) print "done (pulled latest grading branch)" elif repo.has_grading_branch(): print "nothing to update (grading branch is not in staging)" elif registration.final_submission is not None and master: repo.create_grading_branch() print "done (created missing grading branch)" else: print "nothing to update (there is no grading branch)" return CHISUBMIT_SUCCESS
def grader_pull_grading(ctx, course, grader, assignment_id): if grader is None: user = ctx.obj["client"].get_user() grader = get_grader_or_exit(ctx, course, user.username) else: grader = get_grader_or_exit(ctx, course, grader) assignment = get_assignment_or_exit(ctx, course, assignment_id) teams_registrations = get_teams_registrations(course, assignment, grader=grader) if len(teams_registrations) == 0: print("No teams found") ctx.exit(CHISUBMIT_FAIL) teams = sorted(list(teams_registrations.keys()), key=operator.attrgetter("team_id")) for team in teams: registration = teams_registrations[team] repo = GradingGitRepo.get_grading_repo(ctx.obj['config'], course, team, registration) if repo is None: print(("%40s -- Creating grading repo... " % team.team_id), end=' ') repo = GradingGitRepo.create_grading_repo(ctx.obj['config'], course, team, registration, staging_only=True) repo.sync() gradingrepo_pull_grading_branch(ctx.obj['config'], course, team, registration) repo.set_grader_author() print("done") else: print(("%40s -- Pulling grading branch..." % team.team_id), end=' ') gradingrepo_pull_grading_branch(ctx.obj['config'], course, team, registration) print("done") rubricfile = "%s.rubric.txt" % assignment.assignment_id rubricfilepath = "%s/%s" % (repo.repo_path, rubricfile) if not os.path.exists(rubricfilepath): rubric = RubricFile.from_assignment(assignment) rubric.save(rubricfilepath, include_blank_comments=True) return CHISUBMIT_SUCCESS
def create_grading_repos(config, course, assignment, teams): repos = [] for team in teams: repo = GradingGitRepo.get_grading_repo(config, course, team, assignment) if repo is None: print ("Creating grading repo for %s... " % team.id), repo = GradingGitRepo.create_grading_repo(config, course, team, assignment) repo.sync() repos.append(repo) print "done" else: print "Grading repo for %s already exists" % team.id return repos
def instructor_grading_create_grading_repos(ctx, course, assignment_id, all_teams, only, master): assignment = get_assignment_or_exit(ctx, course, assignment_id) teams_registrations = get_teams_registrations(course, assignment, only = only, only_ready_for_grading=not all_teams) if len(teams_registrations) == 0: ctx.exit(CHISUBMIT_FAIL) teams = sorted(teams_registrations.keys(), key=operator.attrgetter("team_id")) for team in teams: registration = teams_registrations[team] repo = GradingGitRepo.get_grading_repo(ctx.obj['config'], course, team, registration) if repo is None: print ("%20s -- Creating grading repo... " % team.team_id), repo = GradingGitRepo.create_grading_repo(ctx.obj['config'], course, team, registration, staging_only = not master) repo.sync() if registration.final_submission is not None: if repo.has_grading_branch_staging(): gradingrepo_pull_grading_branch(ctx.obj['config'], course, team, registration) print "done" else: if master: repo.create_grading_branch() print "done (and created grading branch)" else: print "done (warning: could not pull grading branch; it does not exist)" else: print "done (note: has not submitted yet)" else: print "%20s -- Updating grading repo... " % team.team_id if repo.has_grading_branch_staging(): gradingrepo_pull_grading_branch(ctx.obj['config'], course, team, registration) print "done (pulled latest grading branch)" elif registration.final_submission is not None and master: repo.create_grading_branch() print "done (created missing grading branch)" else: print "nothing to update (there is no grading branch)" return CHISUBMIT_SUCCESS
def grader_pull_grading(ctx, course, grader, assignment_id): if grader is None: user = ctx.obj["client"].get_user() grader = get_grader_or_exit(ctx, course, user.username) else: grader = get_grader_or_exit(ctx, course, grader) assignment = get_assignment_or_exit(ctx, course, assignment_id) teams_registrations = get_teams_registrations(course, assignment, grader = grader) if len(teams_registrations) == 0: print "No teams found" ctx.exit(CHISUBMIT_FAIL) teams = sorted(teams_registrations.keys(), key=operator.attrgetter("team_id")) for team in teams: registration = teams_registrations[team] repo = GradingGitRepo.get_grading_repo(ctx.obj['config'], course, team, registration) if repo is None: print ("%20s -- Creating grading repo... " % team.team_id), repo = GradingGitRepo.create_grading_repo(ctx.obj['config'], course, team, registration, staging_only = True) repo.sync() gradingrepo_pull_grading_branch(ctx.obj['config'], course, team, registration) repo.set_grader_author() print "done" else: print ("%20s -- Pulling grading branch..." % team.team_id), gradingrepo_pull_grading_branch(ctx.obj['config'], course, team, registration) print "done" rubricfile = "%s.rubric.txt" % assignment.assignment_id rubricfilepath = "%s/%s" % (repo.repo_path, rubricfile) if not os.path.exists(rubricfilepath): rubric = RubricFile.from_assignment(assignment) rubric.save(rubricfilepath, include_blank_comments=True) return CHISUBMIT_SUCCESS
def create_grading_repos(config, course, assignment, teams): repos = [] for team in teams: repo = GradingGitRepo.get_grading_repo(config, course, team, assignment) if repo is None: print("Creating grading repo for %s... " % team.id), repo = GradingGitRepo.create_grading_repo(config, course, team, assignment) repo.sync() repos.append(repo) print "done" else: print "Grading repo for %s already exists" % team.id return repos
def instructor_grading_create_grading_repos(ctx, course, assignment_id, all_teams, only, master): assignment = get_assignment_or_exit(ctx, course, assignment_id) teams_registrations = get_teams_registrations(course, assignment, only = only, only_ready_for_grading=not all_teams) if len(teams_registrations) == 0: print("There are no grading repos to create.") ctx.exit(CHISUBMIT_FAIL) teams = sorted(list(teams_registrations.keys()), key=operator.attrgetter("team_id")) for team in teams: registration = teams_registrations[team] repo = GradingGitRepo.get_grading_repo(ctx.obj['config'], course, team, registration) if repo is None: print(("%40s -- Creating grading repo... " % team.team_id), end=' ') try: repo = GradingGitRepo.create_grading_repo(ctx.obj['config'], course, team, registration, staging_only = not master) repo.sync() except GitCommandError as gce: print(gce) if registration.final_submission is not None: if repo.has_grading_branch_staging(): if not registration.grading_started: print("ERROR: This repo has a grading branch, but is not marked as ready for grading.") else: gradingrepo_pull_grading_branch(ctx.obj['config'], course, team, registration) print("done") else: if master: repo.create_grading_branch() registration.grading_started = True print("done (and created grading branch)") else: print("done (warning: could not pull grading branch; it does not exist)") else: if registration.grading_started: print("ERROR: This team has not submitted this assignment, but the repo is marked as ready for grading.") else: print("done (note: has not submitted yet)") else: print(("%40s -- Updating grading repo... " % team.team_id), end=' ') if repo.has_grading_branch_staging(): if not registration.grading_started: print("ERROR: This repo has a grading branch, but is not marked as ready for grading.") else: try: gradingrepo_pull_grading_branch(ctx.obj['config'], course, team, registration) print("done (pulled latest grading branch)") except GitCommandError as gce: print(gce) elif repo.has_grading_branch(): print("nothing to update (grading branch is not in staging)") elif registration.final_submission is not None and master: try: repo.create_grading_branch() if not registration.grading_started: registration.grading_started = True print("done (created missing grading branch)") except GitCommandError as gce: print(gce) else: print("nothing to update (there is no grading branch)") return CHISUBMIT_SUCCESS
def instructor_grading_create_grading_repos(ctx, course, assignment_id, all_teams, only, master): assignment = get_assignment_or_exit(ctx, course, assignment_id) teams_registrations = get_teams_registrations( course, assignment, only=only, only_ready_for_grading=not all_teams) if len(teams_registrations) == 0: print("There are no grading repos to create.") ctx.exit(CHISUBMIT_FAIL) teams = sorted(list(teams_registrations.keys()), key=operator.attrgetter("team_id")) for team in teams: registration = teams_registrations[team] repo = GradingGitRepo.get_grading_repo(ctx.obj['config'], course, team, registration) if repo is None: print(("%40s -- Creating grading repo... " % team.team_id), end=' ') try: repo = GradingGitRepo.create_grading_repo( ctx.obj['config'], course, team, registration, staging_only=not master) repo.sync() except GitCommandError as gce: print(gce) if registration.final_submission is not None: if repo.has_grading_branch_staging(): if not registration.grading_started: print( "ERROR: This repo has a grading branch, but is not marked as ready for grading." ) else: gradingrepo_pull_grading_branch( ctx.obj['config'], course, team, registration) print("done") else: if master: repo.create_grading_branch() registration.grading_started = True print("done (and created grading branch)") else: print( "done (warning: could not pull grading branch; it does not exist)" ) else: if registration.grading_started: print( "ERROR: This team has not submitted this assignment, but the repo is marked as ready for grading." ) else: print("done (note: has not submitted yet)") else: print(("%40s -- Updating grading repo... " % team.team_id), end=' ') if repo.has_grading_branch_staging(): if not registration.grading_started: print( "ERROR: This repo has a grading branch, but is not marked as ready for grading." ) else: try: gradingrepo_pull_grading_branch( ctx.obj['config'], course, team, registration) print("done (pulled latest grading branch)") except GitCommandError as gce: print(gce) elif repo.has_grading_branch(): print("nothing to update (grading branch is not in staging)") elif registration.final_submission is not None and master: try: repo.create_grading_branch() if not registration.grading_started: registration.grading_started = True print("done (created missing grading branch)") except GitCommandError as gce: print(gce) else: print("nothing to update (there is no grading branch)") return CHISUBMIT_SUCCESS