lms.backend.canvas.courses.groups.memberships.add
1import os 2import typing 3 4import edq.util.dirent 5 6import lms.backend.canvas.common 7 8BASE_ENDPOINT = "/api/v1/group_categories/{groupset_id}/import" 9 10def request(backend: typing.Any, 11 course_id: int, 12 groupset_id: int, 13 group_id: int, 14 user_ids: typing.List[int], 15 ) -> int: 16 """ Add users to a group. """ 17 18 url = backend.server + BASE_ENDPOINT.format(groupset_id = groupset_id) 19 headers = backend.get_standard_headers(write = True) 20 21 # Build a CSV. 22 rows = ["canvas_user_id,canvas_group_id"] 23 for user_id in sorted(user_ids): 24 rows.append(f"{user_id},{group_id}") 25 26 # Write CSV. 27 temp_dir = edq.util.dirent.get_temp_dir('edq-lms-canvas-') 28 temp_path = os.path.join(temp_dir, 'data.csv') 29 edq.util.dirent.write_file_bytes(temp_path, "\n".join(rows).encode(edq.util.dirent.DEFAULT_ENCODING)) 30 31 files = { 32 'attachment': open(temp_path, 'rb'), # pylint: disable=consider-using-with 33 } 34 35 raw_object = lms.backend.canvas.common.make_post_request(url, headers = headers, files = files) 36 if (raw_object is None): 37 identifiers = { 38 'course_id': course_id, 39 'groupset_id': groupset_id, 40 'group_id': group_id, 41 'user_ids': user_ids, 42 } 43 backend.not_found('add group memberships', identifiers) 44 45 return 0 46 47 return len(user_ids)
BASE_ENDPOINT =
'/api/v1/group_categories/{groupset_id}/import'
def
request( backend: Any, course_id: int, groupset_id: int, group_id: int, user_ids: List[int]) -> int:
11def request(backend: typing.Any, 12 course_id: int, 13 groupset_id: int, 14 group_id: int, 15 user_ids: typing.List[int], 16 ) -> int: 17 """ Add users to a group. """ 18 19 url = backend.server + BASE_ENDPOINT.format(groupset_id = groupset_id) 20 headers = backend.get_standard_headers(write = True) 21 22 # Build a CSV. 23 rows = ["canvas_user_id,canvas_group_id"] 24 for user_id in sorted(user_ids): 25 rows.append(f"{user_id},{group_id}") 26 27 # Write CSV. 28 temp_dir = edq.util.dirent.get_temp_dir('edq-lms-canvas-') 29 temp_path = os.path.join(temp_dir, 'data.csv') 30 edq.util.dirent.write_file_bytes(temp_path, "\n".join(rows).encode(edq.util.dirent.DEFAULT_ENCODING)) 31 32 files = { 33 'attachment': open(temp_path, 'rb'), # pylint: disable=consider-using-with 34 } 35 36 raw_object = lms.backend.canvas.common.make_post_request(url, headers = headers, files = files) 37 if (raw_object is None): 38 identifiers = { 39 'course_id': course_id, 40 'groupset_id': groupset_id, 41 'group_id': group_id, 42 'user_ids': user_ids, 43 } 44 backend.not_found('add group memberships', identifiers) 45 46 return 0 47 48 return len(user_ids)
Add users to a group.