lms.backend.canvas.courses.assignments.scores.upload
1import typing 2 3import lms.backend.canvas.common 4import lms.model.constants 5import lms.model.scores 6 7BASE_ENDPOINT = "/api/v1/courses/{course_id}/assignments/{assignment_id}/submissions/update_grades" 8 9def request(backend: typing.Any, 10 course_id: int, 11 assignment_id: int, 12 scores: typing.Dict[int, lms.model.scores.ScoreFragment], 13 ) -> int: 14 """ Upload scores and return the number of scores sent. """ 15 16 if (len(scores) == 0): 17 return 0 18 19 url = backend.server + BASE_ENDPOINT.format(course_id = course_id, assignment_id = assignment_id) 20 headers = backend.get_standard_headers() 21 22 headers[lms.model.constants.HEADER_KEY_WRITE] = 'true' 23 24 data = {} 25 for (user_id, score) in scores.items(): 26 text_score = '' 27 if (score.score is not None): 28 text_score = str(score.score) 29 30 data[f"grade_data[{user_id}][posted_grade]"] = text_score 31 32 if ((score.comment is not None) and (len(score.comment) > 0)): 33 data[f"grade_data[{user_id}][text_comment]"] = score.comment 34 35 response = lms.backend.canvas.common.make_post_request(url, headers = headers, data = data) 36 if (response is None): 37 return 0 38 39 return len(scores)
BASE_ENDPOINT =
'/api/v1/courses/{course_id}/assignments/{assignment_id}/submissions/update_grades'
def
request( backend: Any, course_id: int, assignment_id: int, scores: Dict[int, lms.model.scores.ScoreFragment]) -> int:
10def request(backend: typing.Any, 11 course_id: int, 12 assignment_id: int, 13 scores: typing.Dict[int, lms.model.scores.ScoreFragment], 14 ) -> int: 15 """ Upload scores and return the number of scores sent. """ 16 17 if (len(scores) == 0): 18 return 0 19 20 url = backend.server + BASE_ENDPOINT.format(course_id = course_id, assignment_id = assignment_id) 21 headers = backend.get_standard_headers() 22 23 headers[lms.model.constants.HEADER_KEY_WRITE] = 'true' 24 25 data = {} 26 for (user_id, score) in scores.items(): 27 text_score = '' 28 if (score.score is not None): 29 text_score = str(score.score) 30 31 data[f"grade_data[{user_id}][posted_grade]"] = text_score 32 33 if ((score.comment is not None) and (len(score.comment) > 0)): 34 data[f"grade_data[{user_id}][text_comment]"] = score.comment 35 36 response = lms.backend.canvas.common.make_post_request(url, headers = headers, data = data) 37 if (response is None): 38 return 0 39 40 return len(scores)
Upload scores and return the number of scores sent.