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.