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.