Coverage for e2xgrader/extensions/serverextensions.py: 97%

35 statements  

« prev     ^ index     » next       coverage.py v7.4.2, created at 2024-03-14 13:22 +0100

1from .base import BaseExtensionManager 

2from .utils import get_serverextension_toggle 

3 

4NBGRADER_ASSIGNMENT_LIST = "nbgrader.server_extensions.assignment_list" 

5NBGRADER_FORMGRADER = "nbgrader.server_extensions.formgrader" 

6NBGRADER_VALIDATE_ASSIGNMENT = "nbgrader.server_extensions.validate_assignment" 

7NBGRADER_COURSE_LIST = "nbgrader.server_extensions.course_list" 

8NBGRADER_EXTENSIONS = [ 

9 NBGRADER_ASSIGNMENT_LIST, 

10 NBGRADER_COURSE_LIST, 

11 NBGRADER_FORMGRADER, 

12 NBGRADER_VALIDATE_ASSIGNMENT, 

13] 

14 

15E2XGRADER_TEACHER = "e2xgrader.server_extensions.teacher" 

16E2XGRADER_STUDENT = "e2xgrader.server_extensions.student" 

17E2XGRADER_STUDENT_EXAM = "e2xgrader.server_extensions.student_exam" 

18E2XGRADER_EXTENSIONS = [E2XGRADER_TEACHER, E2XGRADER_STUDENT, E2XGRADER_STUDENT_EXAM] 

19 

20toggle_server_extension_python = get_serverextension_toggle() 

21 

22 

23class ServerExtensionManager(BaseExtensionManager): 

24 def __init__(self): 

25 super().__init__() 

26 if toggle_server_extension_python is None: 

27 self.log.warn("No server extension toggler found!") 

28 

29 def deactivate(self, sys_prefix: bool = True, user: bool = False) -> None: 

30 for import_name in E2XGRADER_EXTENSIONS + NBGRADER_EXTENSIONS: 

31 toggle_server_extension_python( 

32 import_name=import_name, enabled=False, sys_prefix=sys_prefix, user=user 

33 ) 

34 

35 def activate_teacher(self, sys_prefix: bool = True, user: bool = False) -> None: 

36 kwargs = dict(sys_prefix=sys_prefix, user=user) 

37 self.deactivate(**kwargs) 

38 for import_name in [E2XGRADER_TEACHER, NBGRADER_COURSE_LIST]: 

39 toggle_server_extension_python( 

40 import_name=import_name, enabled=True, **kwargs 

41 ) 

42 

43 def activate_student(self, sys_prefix: bool = True, user: bool = False) -> None: 

44 kwargs = dict(sys_prefix=sys_prefix, user=user) 

45 self.deactivate(**kwargs) 

46 for import_name in [E2XGRADER_STUDENT, NBGRADER_COURSE_LIST]: 

47 toggle_server_extension_python( 

48 import_name=import_name, enabled=True, **kwargs 

49 ) 

50 

51 def activate_student_exam(self, sys_prefix=True, user=False): 

52 kwargs = dict(sys_prefix=sys_prefix, user=user) 

53 self.deactivate(**kwargs) 

54 for import_name in [E2XGRADER_STUDENT_EXAM, NBGRADER_COURSE_LIST]: 

55 toggle_server_extension_python( 

56 import_name=import_name, enabled=True, **kwargs 

57 )