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