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