autograder.model.user

 1import enum
 2import typing
 3
 4import lms.model.users
 5
 6class CourseRole(enum.Enum):
 7    """
 8    Different roles a user can have on an autograder course.
 9    """
10
11    UNKNOWN = 'unknown'
12    OTHER = 'other'
13    STUDENT = 'student'
14    GRADER = 'grader'
15    ADMIN = 'admin'
16    OWNER = 'owner'
17
18    def __str__(self) -> str:
19        return str(self.value)
20
21    @classmethod
22    def has_value(cls, value: typing.Any) -> bool:
23        """
24        Check if a value is present in the enum.
25        Required for older versions of Python.
26        """
27
28        return (value is not None) and (str(value).upper() in cls.__members__)
29
30class ServerRole(enum.Enum):
31    """
32    Different roles a user can have on an autograder server.
33    """
34
35    UNKNOWN = 'unknown'
36    USER = 'user'
37    CREATOR = 'creator'
38    ADMIN = 'admin'
39    OWNER = 'owner'
40
41    def __str__(self) -> str:
42        return str(self.value)
43
44    @classmethod
45    def has_value(cls, value: typing.Any) -> bool:
46        """
47        Check if a value is present in the enum.
48        Required for older versions of Python.
49        """
50
51        return (value is not None) and (str(value).upper() in cls.__members__)
52
53def make_course_user(raw_user: typing.Dict[str, typing.Any]) -> lms.model.users.CourseUser:
54    """
55    Create an LMS Toolkit course user from raw data coming from the autograder.
56    """
57
58    raw_user = raw_user.copy()
59
60    raw_user['id'] = raw_user['email']
61    raw_user['raw_role'] = raw_user['role']
62    raw_user['role'] = lms.model.users.CourseRole(raw_user['raw_role'])
63
64    return lms.model.users.CourseUser(**raw_user)
65
66def make_server_user(raw_user: typing.Dict[str, typing.Any]) -> lms.model.users.ServerUser:
67    """
68    Create an LMS Toolkit server user from raw data coming from the autograder.
69    """
70
71    return lms.model.users.ServerUser(
72        id = raw_user['email'],
73        **raw_user,
74    )
75
76def promote_server_user(user: lms.model.users.ServerUser) -> lms.model.users.CourseUser:
77    """
78    A a server admin that has been "promoted" to a course user.
79    """
80
81    return lms.model.users.CourseUser(
82        raw_role = 'owner',
83        role = lms.model.users.CourseRole(CourseRole.OWNER.value),
84        **vars(user),
85    )
class CourseRole(enum.Enum):
 7class CourseRole(enum.Enum):
 8    """
 9    Different roles a user can have on an autograder course.
10    """
11
12    UNKNOWN = 'unknown'
13    OTHER = 'other'
14    STUDENT = 'student'
15    GRADER = 'grader'
16    ADMIN = 'admin'
17    OWNER = 'owner'
18
19    def __str__(self) -> str:
20        return str(self.value)
21
22    @classmethod
23    def has_value(cls, value: typing.Any) -> bool:
24        """
25        Check if a value is present in the enum.
26        Required for older versions of Python.
27        """
28
29        return (value is not None) and (str(value).upper() in cls.__members__)

Different roles a user can have on an autograder course.

UNKNOWN = <CourseRole.UNKNOWN: 'unknown'>
OTHER = <CourseRole.OTHER: 'other'>
STUDENT = <CourseRole.STUDENT: 'student'>
GRADER = <CourseRole.GRADER: 'grader'>
ADMIN = <CourseRole.ADMIN: 'admin'>
OWNER = <CourseRole.OWNER: 'owner'>
@classmethod
def has_value(cls, value: Any) -> bool:
22    @classmethod
23    def has_value(cls, value: typing.Any) -> bool:
24        """
25        Check if a value is present in the enum.
26        Required for older versions of Python.
27        """
28
29        return (value is not None) and (str(value).upper() in cls.__members__)

Check if a value is present in the enum. Required for older versions of Python.

class ServerRole(enum.Enum):
31class ServerRole(enum.Enum):
32    """
33    Different roles a user can have on an autograder server.
34    """
35
36    UNKNOWN = 'unknown'
37    USER = 'user'
38    CREATOR = 'creator'
39    ADMIN = 'admin'
40    OWNER = 'owner'
41
42    def __str__(self) -> str:
43        return str(self.value)
44
45    @classmethod
46    def has_value(cls, value: typing.Any) -> bool:
47        """
48        Check if a value is present in the enum.
49        Required for older versions of Python.
50        """
51
52        return (value is not None) and (str(value).upper() in cls.__members__)

Different roles a user can have on an autograder server.

UNKNOWN = <ServerRole.UNKNOWN: 'unknown'>
USER = <ServerRole.USER: 'user'>
CREATOR = <ServerRole.CREATOR: 'creator'>
ADMIN = <ServerRole.ADMIN: 'admin'>
OWNER = <ServerRole.OWNER: 'owner'>
@classmethod
def has_value(cls, value: Any) -> bool:
45    @classmethod
46    def has_value(cls, value: typing.Any) -> bool:
47        """
48        Check if a value is present in the enum.
49        Required for older versions of Python.
50        """
51
52        return (value is not None) and (str(value).upper() in cls.__members__)

Check if a value is present in the enum. Required for older versions of Python.

def make_course_user(raw_user: Dict[str, Any]) -> lms.model.users.CourseUser:
54def make_course_user(raw_user: typing.Dict[str, typing.Any]) -> lms.model.users.CourseUser:
55    """
56    Create an LMS Toolkit course user from raw data coming from the autograder.
57    """
58
59    raw_user = raw_user.copy()
60
61    raw_user['id'] = raw_user['email']
62    raw_user['raw_role'] = raw_user['role']
63    raw_user['role'] = lms.model.users.CourseRole(raw_user['raw_role'])
64
65    return lms.model.users.CourseUser(**raw_user)

Create an LMS Toolkit course user from raw data coming from the autograder.

def make_server_user(raw_user: Dict[str, Any]) -> lms.model.users.ServerUser:
67def make_server_user(raw_user: typing.Dict[str, typing.Any]) -> lms.model.users.ServerUser:
68    """
69    Create an LMS Toolkit server user from raw data coming from the autograder.
70    """
71
72    return lms.model.users.ServerUser(
73        id = raw_user['email'],
74        **raw_user,
75    )

Create an LMS Toolkit server user from raw data coming from the autograder.

def promote_server_user(user: lms.model.users.ServerUser) -> lms.model.users.CourseUser:
77def promote_server_user(user: lms.model.users.ServerUser) -> lms.model.users.CourseUser:
78    """
79    A a server admin that has been "promoted" to a course user.
80    """
81
82    return lms.model.users.CourseUser(
83        raw_role = 'owner',
84        role = lms.model.users.CourseRole(CourseRole.OWNER.value),
85        **vars(user),
86    )

A a server admin that has been "promoted" to a course user.