autograder.api.courses.assignments.submissions.fetch.course.scores

Get the most recent scores for this assignment.

 1"""
 2Get the most recent scores for this assignment.
 3"""
 4
 5import typing
 6
 7import lms.model.assignments
 8import lms.model.scores
 9import lms.model.users
10
11import autograder.api.common
12import autograder.api.config
13import autograder.model.assignment
14import autograder.model.config
15
16API_ENDPOINT: str = 'courses/assignments/submissions/fetch/course/scores'
17API_WRITE: bool = False
18API_PARAMS: typing.List[autograder.api.config.APIParam] = [
19    autograder.api.config.PARAM_SERVER,
20    autograder.api.config.PARAM_USER_EMAIL,
21    autograder.api.config.PARAM_USER_PASS,
22
23    autograder.api.config.PARAM_COURSE,
24    autograder.api.config.PARAM_ASSIGNMENT,
25
26    autograder.api.config.PARAM_COURSE_USER_REFERENCES,
27]
28
29def send(config: autograder.model.config.Config, **kwargs: typing.Any) -> typing.List[lms.model.scores.AssignmentScore]:
30    """ Send a request to the autograder. """
31
32    response = autograder.api.common.make_api_request(API_ENDPOINT, config, API_PARAMS, write = API_WRITE, **kwargs)
33
34    scores = []
35    for (user_email, raw_score) in response['submission-infos'].items():
36        if (raw_score is None):
37            assignment = lms.model.assignments.AssignmentQuery(id = config.assignment)
38            user = lms.model.users.UserQuery(email = user_email)
39            scores.append(lms.model.scores.AssignmentScore(assignment = assignment, user = user))
40        else:
41            scores.append(autograder.model.assignment.make_assignment_score(raw_score))
42
43    return sorted(scores)
API_ENDPOINT: str = 'courses/assignments/submissions/fetch/course/scores'
API_WRITE: bool = False
def send( config: autograder.model.config.Config, **kwargs: Any) -> List[lms.model.scores.AssignmentScore]:
30def send(config: autograder.model.config.Config, **kwargs: typing.Any) -> typing.List[lms.model.scores.AssignmentScore]:
31    """ Send a request to the autograder. """
32
33    response = autograder.api.common.make_api_request(API_ENDPOINT, config, API_PARAMS, write = API_WRITE, **kwargs)
34
35    scores = []
36    for (user_email, raw_score) in response['submission-infos'].items():
37        if (raw_score is None):
38            assignment = lms.model.assignments.AssignmentQuery(id = config.assignment)
39            user = lms.model.users.UserQuery(email = user_email)
40            scores.append(lms.model.scores.AssignmentScore(assignment = assignment, user = user))
41        else:
42            scores.append(autograder.model.assignment.make_assignment_score(raw_score))
43
44    return sorted(scores)

Send a request to the autograder.