lms.cli.courses.groupsets.memberships.common
1import typing 2 3import edq.util.dirent 4 5import lms.model.backend 6import lms.model.groups 7 8def load_group_memberships( 9 backend: lms.model.backend.APIBackend, 10 path: str, 11 skip_rows: bool, 12 ) -> typing.List[lms.model.groups.GroupMembership]: 13 """ Read a group membership TSV file. """ 14 15 memberships: typing.List[lms.model.groups.GroupMembership] = [] 16 17 with open(path, 'r', encoding = edq.util.dirent.DEFAULT_ENCODING) as file: 18 lineno = 0 19 real_rows = 0 20 for line in file: 21 lineno += 1 22 23 if (line.strip() == ''): 24 continue 25 26 real_rows += 1 27 28 if (real_rows <= skip_rows): 29 continue 30 31 parts = [part.strip() for part in line.split("\t")] 32 if (len(parts) != 2): 33 raise ValueError(f"File '{path}' line {lineno} has the incorrect number of values. Expecting 2, found {len(parts)}.") 34 35 group_query = backend.parse_group_query(parts[0]) 36 if (group_query is None): 37 raise ValueError(f"File '{path}' line {lineno} has a group query that could not be parsed: '{parts[0]}'.") 38 39 user_query = backend.parse_user_query(parts[1]) 40 if (user_query is None): 41 raise ValueError(f"File '{path}' line {lineno} has a user query that could not be parsed: '{parts[1]}'.") 42 43 memberships.append(lms.model.groups.GroupMembership(group = group_query, user = user_query)) 44 45 return memberships
def
load_group_memberships( backend: lms.model.backend.APIBackend, path: str, skip_rows: bool) -> List[lms.model.groups.GroupMembership]:
9def load_group_memberships( 10 backend: lms.model.backend.APIBackend, 11 path: str, 12 skip_rows: bool, 13 ) -> typing.List[lms.model.groups.GroupMembership]: 14 """ Read a group membership TSV file. """ 15 16 memberships: typing.List[lms.model.groups.GroupMembership] = [] 17 18 with open(path, 'r', encoding = edq.util.dirent.DEFAULT_ENCODING) as file: 19 lineno = 0 20 real_rows = 0 21 for line in file: 22 lineno += 1 23 24 if (line.strip() == ''): 25 continue 26 27 real_rows += 1 28 29 if (real_rows <= skip_rows): 30 continue 31 32 parts = [part.strip() for part in line.split("\t")] 33 if (len(parts) != 2): 34 raise ValueError(f"File '{path}' line {lineno} has the incorrect number of values. Expecting 2, found {len(parts)}.") 35 36 group_query = backend.parse_group_query(parts[0]) 37 if (group_query is None): 38 raise ValueError(f"File '{path}' line {lineno} has a group query that could not be parsed: '{parts[0]}'.") 39 40 user_query = backend.parse_user_query(parts[1]) 41 if (user_query is None): 42 raise ValueError(f"File '{path}' line {lineno} has a user query that could not be parsed: '{parts[1]}'.") 43 44 memberships.append(lms.model.groups.GroupMembership(group = group_query, user = user_query)) 45 46 return memberships
Read a group membership TSV file.