autograder.api.courses.gradebook.fetch
Fetch a gradebook for this course.
1""" 2Fetch a gradebook for this course. 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/gradebook/fetch' 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 25 autograder.api.config.PARAM_COURSE_USER_REFERENCES, 26 autograder.api.config.PARAM_TARGET_ASSIGNMENTS, 27] 28 29def send(config: autograder.model.config.Config, **kwargs: typing.Any) -> lms.model.scores.Gradebook: 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 assignment_queries: typing.List[lms.model.assignments.AssignmentQuery] = [] 35 user_queries: typing.List[lms.model.users.UserQuery] = [] 36 37 for (assignment_id, user_scores) in response['gradebook'].items(): 38 assignment_queries.append(lms.model.assignments.AssignmentQuery(id = assignment_id)) 39 if (len(user_queries) == 0): 40 for user_email in user_scores: 41 user_queries.append(lms.model.users.UserQuery(id = user_email)) 42 43 gradebook = lms.model.scores.Gradebook(assignment_queries, user_queries) 44 45 for user_scores in response['gradebook'].values(): 46 for raw_score in user_scores.values(): 47 if (raw_score is not None): 48 score = autograder.model.assignment.make_assignment_score(raw_score) 49 score.user = lms.model.users.UserQuery(id = raw_score['user']) 50 gradebook.add(score) 51 52 return gradebook
API_ENDPOINT: str =
'courses/gradebook/fetch'
API_WRITE: bool =
False
API_PARAMS: List[autograder.api.config.APIParam] =
[<autograder.api.config.APIParam object>, <autograder.api.config.APIParam object>, <autograder.api.config.APIParam object>, <autograder.api.config.APIParam object>, <autograder.api.config.APIParam object>, <autograder.api.config.APIParam object>]
30def send(config: autograder.model.config.Config, **kwargs: typing.Any) -> lms.model.scores.Gradebook: 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 assignment_queries: typing.List[lms.model.assignments.AssignmentQuery] = [] 36 user_queries: typing.List[lms.model.users.UserQuery] = [] 37 38 for (assignment_id, user_scores) in response['gradebook'].items(): 39 assignment_queries.append(lms.model.assignments.AssignmentQuery(id = assignment_id)) 40 if (len(user_queries) == 0): 41 for user_email in user_scores: 42 user_queries.append(lms.model.users.UserQuery(id = user_email)) 43 44 gradebook = lms.model.scores.Gradebook(assignment_queries, user_queries) 45 46 for user_scores in response['gradebook'].values(): 47 for raw_score in user_scores.values(): 48 if (raw_score is not None): 49 score = autograder.model.assignment.make_assignment_score(raw_score) 50 score.user = lms.model.users.UserQuery(id = raw_score['user']) 51 gradebook.add(score) 52 53 return gradebook
Send a request to the autograder.