Coverage for e2xgrader/server_extensions/apps/diagram_editor/diagrameditor.py: 85%

33 statements  

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

1import json 

2 

3from e2xcore import BaseApp 

4from e2xcore.handlers import E2xApiHandler 

5from nbgrader.apps.baseapp import NbGrader 

6from nbgrader.server_extensions.formgrader.base import check_xsrf 

7from tornado import web 

8from traitlets import List, Unicode 

9 

10 

11class DiagramConfigHandler(E2xApiHandler): 

12 @web.authenticated 

13 @check_xsrf 

14 def get(self): 

15 self.finish(json.dumps(self.settings.get("diagram_config", dict()))) 

16 

17 

18class DiagramEditor(NbGrader, BaseApp): 

19 drawDomain = Unicode( 

20 default_value=None, allow_none=True, help="The url to drawio" 

21 ).tag(config=True) 

22 drawOrigin = Unicode( 

23 default_value=None, allow_none=True, help="The drawio origin" 

24 ).tag(config=True) 

25 libraries = List(default_value=[], help="A list of activated libraries").tag( 

26 config=True 

27 ) 

28 

29 def __init__(self, **kwargs): 

30 NbGrader.__init__(self, **kwargs) 

31 BaseApp.__init__(self, **kwargs) 

32 

33 def get_diagram_config(self): 

34 # self.log.info("My drawDomain is", self.drawDomain) 

35 config = dict() 

36 if self.drawDomain: 

37 config["drawDomain"] = self.drawDomain 

38 if self.drawOrigin: 

39 config["drawOrigin"] = self.drawOrigin 

40 if len(self.libraries) > 0: 

41 config["libs"] = self.libraries 

42 return config 

43 

44 def load_app(self): 

45 self.log.info("Loading the diagrameditor app") 

46 self.initialize([]) 

47 self.update_tornado_settings(dict(diagram_config=self.get_diagram_config())) 

48 self.add_handlers( 

49 [ 

50 (r"/e2x/diagrams/api", DiagramConfigHandler), 

51 ] 

52 )