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
« prev ^ index » next coverage.py v7.4.2, created at 2024-03-14 13:22 +0100
1import json
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
11class DiagramConfigHandler(E2xApiHandler):
12 @web.authenticated
13 @check_xsrf
14 def get(self):
15 self.finish(json.dumps(self.settings.get("diagram_config", dict())))
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 )
29 def __init__(self, **kwargs):
30 NbGrader.__init__(self, **kwargs)
31 BaseApp.__init__(self, **kwargs)
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
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 )