12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- """
- Copyright (c) Jupyter Development Team.
- Distributed under the terms of the Modified BSD License.
- """
- import json
- import os
- import os.path as osp
- from jupyter_server.base.handlers import FileFindHandler, JupyterHandler
- from jupyter_server.extension.handler import (
- ExtensionHandlerJinjaMixin,
- ExtensionHandlerMixin,
- )
- from jupyter_server.utils import url_path_join as ujoin
- from jupyterlab_server import LabConfig, LabServerApp
- from traitlets import Unicode
- HERE = osp.dirname(__file__)
- def _jupyter_server_extension_points():
- return [{"module": __name__, "app": ExampleApp}]
- class ExampleHandler(ExtensionHandlerJinjaMixin, ExtensionHandlerMixin, JupyterHandler):
- """Handle requests between the main app page and notebook server."""
- def get(self):
- """Get the main page for the application's interface."""
- config_data = {
- # Use camelCase here, since that's what the lab components expect
- "baseUrl": self.base_url,
- "token": self.settings["token"],
- "fullStaticUrl": ujoin(self.base_url, "static", self.name),
- "frontendUrl": ujoin(self.base_url, "example/"),
- }
- return self.write(
- self.render_template(
- "index.html",
- static=self.static_url,
- base_url=self.base_url,
- token=self.settings["token"],
- page_config=config_data,
- )
- )
- class ExampleApp(LabServerApp):
- extension_url = "/example"
- app_url = "/example"
- default_url = "/example"
- name = __name__
- load_other_extensions = False
- app_name = "JupyterLab Example Service"
- static_dir = os.path.join(HERE, "static")
- templates_dir = os.path.join(HERE)
- app_settings_dir = os.path.join(HERE, "build", "application_settings")
- schemas_dir = os.path.join(HERE, "build", "schemas")
- themes_dir = os.path.join(HERE, "build", "themes")
- user_settings_dir = os.path.join(HERE, "build", "user_settings")
- workspaces_dir = os.path.join(HERE, "build", "workspaces")
- def initialize_handlers(self):
- """Add example handler to Lab Server's handler list."""
- self.handlers.append(("/example", ExampleHandler))
- if __name__ == "__main__":
- ExampleApp.launch_instance()
|