Browse Source

Fix notebook serverextension after labextension changes

ensures labextension data is defined on the notebookapp,
which it wasn't.
Min RK 8 years ago
parent
commit
ae20719a3c
2 changed files with 30 additions and 20 deletions
  1. 6 2
      jupyterlab/__init__.py
  2. 24 18
      jupyterlab/labapp.py

+ 6 - 2
jupyterlab/__init__.py

@@ -61,7 +61,7 @@ class LabHandler(IPythonHandler):
 
     @web.authenticated
     def get(self):
-        static_prefix = ujoin(self.application.settings['base_url'], PREFIX)
+        static_prefix = ujoin(self.base_url, PREFIX)
         labextensions = self.application.labextensions
 
         data = get_labextension_manifest_data_by_folder(BUILT_FILES)
@@ -121,18 +121,22 @@ def _jupyter_server_extension_paths():
 
 
 def load_jupyter_server_extension(nbapp):
+    from jupyter_core.paths import jupyter_path
+    from .labapp import get_labextensions
+
     base_dir = os.path.realpath(os.path.join(HERE, '..'))
     dev_mode = os.path.exists(os.path.join(base_dir, '.git'))
     if dev_mode:
         nbapp.log.info(DEV_NOTE_NPM)
     nbapp.log.info('JupyterLab alpha preview extension loaded from %s' % HERE)
     webapp = nbapp.web_app
+    webapp.labextensions = get_labextensions(parent=nbapp)
     base_url = webapp.settings['base_url']
     webapp.add_handlers(".*$",
         [(ujoin(base_url, h[0]),) + h[1:] for h in default_handlers])
     labextension_handler = (
         r"%s/(.*)" % EXTENSION_PREFIX, FileFindHandler, {
-            'path': nbapp.labextensions_path,
+            'path': jupyter_path('labextensions'),
             'no_cache_paths': ['/'],  # don't cache anything in labbextensions
         }
     )

+ 24 - 18
jupyterlab/labapp.py

@@ -8,9 +8,26 @@
 import os
 from jupyter_core.paths import jupyter_config_path, jupyter_path
 from notebook.notebookapp import NotebookApp
-from traitlets import List, Unicode
+from traitlets import List, Unicode, default
 from traitlets.config.manager import BaseJSONConfigManager
 
+def get_labextensions(parent=None):
+    """Get the list of enabled lab extensions"""
+    extensions = []
+    config_dirs = [os.path.join(p, 'labconfig') for p in
+                   jupyter_config_path()]
+    for config_dir in config_dirs:
+        cm = BaseJSONConfigManager(parent=parent, config_dir=config_dir)
+        data = cm.get("jupyterlab_config")
+        labextensions = (
+            data.setdefault("LabApp", {})
+            .setdefault("labextensions", {})
+        )
+        for name, enabled in labextensions.items():
+            if enabled:
+                extensions.append(name)
+    return extensions
+
 
 class LabApp(NotebookApp):
 
@@ -21,23 +38,12 @@ class LabApp(NotebookApp):
     extra_labextensions_path = List(Unicode(), config=True,
         help="""extra paths to look for JupyterLab extensions"""
     )
-
-    @property
-    def labextensions(self):
-        extensions = []
-        config_dirs = [os.path.join(p, 'labconfig') for p in
-                       jupyter_config_path()]
-        for config_dir in config_dirs:
-            cm = BaseJSONConfigManager(parent=self, config_dir=config_dir)
-            data = cm.get("jupyterlab_config")
-            labextensions = (
-                data.setdefault("LabApp", {})
-                .setdefault("labextensions", {})
-            )
-            for name, enabled in labextensions.items():
-                if enabled:
-                    extensions.append(name)
-        return extensions
+    
+    labextensions = List(Unicode())
+    
+    @default('labextensions')
+    def _labextensions_default(self):
+        return get_labextensions(parent=self)
 
     @property
     def labextensions_path(self):