Пример #1
0
def admin_course_create_individual_teams(ctx, course_id, dry_run, only):      
    course = get_course_or_exit(ctx, course_id)    

    if only is not None:
        students = [get_student_or_exit(ctx, course, only)]
    else:
        students = course.get_students()
        
    
    for student in students:
        print "Processing %s (%s, %s)" % (student.username, student.user.last_name, student.user.first_name)        

        try:
            team = course.get_team(student.username)

            tms = team.get_team_members()
            if len(tms) == 0:
                # Incomplete team creation
                if not dry_run:
                    team.add_team_member(student.username, confirmed = True)
                print "- Added user %s to team %s." % (student.username, team.team_id)
            elif len(tms) == 1 and tms[0].username == student.username:
                print "- User %s already has an individual team." % student.username
            else:
                print "- ERROR: Team '%s' exists but it has these team members: %s" % (team.team_id, [tm.username for tm in tms])
            
        except UnknownObjectException, uoe:
            if not dry_run:
                team = course.create_team(student.username)
                team.add_team_member(student.username, confirmed = True)
            print "- Created individual team for user %s." % student.username
            
        print
Пример #2
0
def admin_course_create_individual_teams(ctx, course_id, dry_run, only):
    course = get_course_or_exit(ctx, course_id)

    if only is not None:
        students = [get_student_or_exit(ctx, course, only)]
    else:
        students = course.get_students()

    for student in students:
        print "Processing %s (%s, %s)" % (
            student.username, student.user.last_name, student.user.first_name)

        try:
            team = course.get_team(student.username)

            tms = team.get_team_members()
            if len(tms) == 0:
                # Incomplete team creation
                if not dry_run:
                    team.add_team_member(student.username, confirmed=True)
                print "- Added user %s to team %s." % (student.username,
                                                       team.team_id)
            elif len(tms) == 1 and tms[0].username == student.username:
                print "- User %s already has an individual team." % student.username
            else:
                print "- ERROR: Team '%s' exists but it has these team members: %s" % (
                    team.team_id, [tm.username for tm in tms])

        except UnknownObjectException, uoe:
            if not dry_run:
                team = course.create_team(student.username)
                team.add_team_member(student.username, confirmed=True)
            print "- Created individual team for user %s." % student.username

        print
Пример #3
0
def shared_course_set_user_attribute(ctx, course, user_type, username, attr_name, attr_value):
    if user_type == "instructor":
        user = get_instructor_or_exit(ctx, course, username)
    elif user_type == "grader":
        user = get_grader_or_exit(ctx, course, username)
    elif user_type == "student":
        user = get_student_or_exit(ctx, course, username)
    
    api_obj_set_attribute(ctx, user, attr_name, attr_value)
Пример #4
0
def shared_course_set_user_attribute(ctx, course, user_type, username,
                                     attr_name, attr_value):
    if user_type == "instructor":
        user = get_instructor_or_exit(ctx, course, username)
    elif user_type == "grader":
        user = get_grader_or_exit(ctx, course, username)
    elif user_type == "student":
        user = get_student_or_exit(ctx, course, username)

    api_obj_set_attribute(ctx, user, attr_name, attr_value)
Пример #5
0
def instructor_grading_add_conflict(ctx, course, grader_id, student_id):
    grader = get_grader_or_exit(ctx, course, grader_id)
    student = get_student_or_exit(ctx, course, student_id)

    if student.username in grader.conflicts_usernames:
        print("Student %s is already listed as a conflict for grader %s" % (student.username, grader.username))
        ctx.exit(CHISUBMIT_FAIL)

    conflicts_usernames = grader.conflicts_usernames[:]
    conflicts_usernames.append(student.username)
    grader.conflicts_usernames = conflicts_usernames

    return CHISUBMIT_SUCCESS
Пример #6
0
def instructor_grading_add_conflict(ctx, course, grader_id, student_id):
    grader = get_grader_or_exit(ctx, course, grader_id)
    student = get_student_or_exit(ctx, course, student_id)

    if student.username in grader.conflicts_usernames:
        print("Student %s is already listed as a conflict for grader %s" %
              (student.username, grader.username))
        ctx.exit(CHISUBMIT_FAIL)

    conflicts_usernames = grader.conflicts_usernames[:]
    conflicts_usernames.append(student.username)
    grader.conflicts_usernames = conflicts_usernames

    return CHISUBMIT_SUCCESS
Пример #7
0
def student_course_show_extensions(ctx, course, username):
    user = ctx.obj["client"].get_user()

    if username is not None:
        try:
            course.get_instructor(user.username)
        except UnknownObjectException:
            print "Only instructors can use the --username option"
            ctx.exit(CHISUBMIT_FAIL)
    else:
        username = user.username

    student = get_student_or_exit(ctx, course, username)

    if course.extension_policy == "per-team":
        print "This course uses per-team extensions."
        print "Please use 'chisubmit student team show' to see the number of extensions"
        print "available for the teams you are in."
        ctx.exit(CHISUBMIT_SUCCESS)

    print "%s, %s" % (student.user.last_name, student.user.first_name)
    print
    teams = course.get_teams()

    extensions = student.extensions
    extensions_used = []

    for t in teams:
        if username not in [tm.username for tm in t.get_team_members()]:
            continue

        registrations = t.get_assignment_registrations()
        for reg in registrations:
            if reg.final_submission is not None:
                ex = reg.final_submission.extensions_used
                if ex > 0:
                    extensions_used.append((reg.assignment_id, t.team_id, ex))

    n_extensions_used = sum([x[2] for x in extensions_used])

    print "You started with %i extensions and you have %i extensions left." % (
        extensions, extensions - n_extensions_used)

    if len(extensions_used) > 0:
        for aid, tid, ex in extensions_used:
            print "- You used %i extension(s) on %s (as '%s')" % (ex, aid, tid)
Пример #8
0
def student_course_show_extensions(ctx, course, username):
    user = ctx.obj["client"].get_user()
    
    if username is not None:
        try:
            course.get_instructor(user.username)
        except UnknownObjectException:
            print "Only instructors can use the --username option"
            ctx.exit(CHISUBMIT_FAIL)
    else:
        username = user.username
   
    student = get_student_or_exit(ctx, course, username)
    
    if course.extension_policy == "per-team":
        print "This course uses per-team extensions."
        print "Please use 'chisubmit student team show' to see the number of extensions"
        print "available for the teams you are in."
        ctx.exit(CHISUBMIT_SUCCESS)
        
    print "%s, %s" % (student.user.last_name, student.user.first_name) 
    print
    teams = course.get_teams()
    
    extensions = student.extensions
    extensions_used = []
    
    for t in teams:
        if username not in [tm.username for tm in t.get_team_members()]:
            continue
        
        registrations = t.get_assignment_registrations()
        for reg in registrations:
            if reg.final_submission is not None:
                ex = reg.final_submission.extensions_used
                if ex > 0:
                    extensions_used.append((reg.assignment_id, t.team_id, ex))
                    
    n_extensions_used = sum([x[2] for x in extensions_used])
                    
    print "You started with %i extensions and you have %i extensions left." % (extensions, extensions - n_extensions_used)
    
    if len(extensions_used) > 0:
        for aid, tid, ex in extensions_used:
            print "- You used %i extension(s) on %s (as '%s')" % (ex, aid, tid)
Пример #9
0
def student_course_set_git_username(ctx, course, git_username):
    user = ctx.obj["client"].get_user()
    
    student = get_student_or_exit(ctx, course, user.username)
    
    api_obj_set_attribute(ctx, student, "git_username", git_username)    
Пример #10
0
def student_course_set_git_username(ctx, course, git_username):
    user = ctx.obj["client"].get_user()

    student = get_student_or_exit(ctx, course, user.username)

    api_obj_set_attribute(ctx, student, "git_username", git_username)