diff --git a/IPython/frontend/html/notebook/azurenbmanager.py b/IPython/frontend/html/notebook/azurenbmanager.py
index 9e251c9..bc0d6ee 100644
--- a/IPython/frontend/html/notebook/azurenbmanager.py
+++ b/IPython/frontend/html/notebook/azurenbmanager.py
@@ -49,7 +49,7 @@ class AzureNotebookManager(BaseNotebookManager):
return BlobService(account_name=self.account_name, account_key=self.account_key)
def __init__(self, **kwargs):
- super(BaseNotebookManager,self).__init__(**kwargs)
+ super(AzureNotebookManager, self).__init__(**kwargs)
self._update_service_host_base(self.blob_service_host_base)
self._create_container()
@@ -138,3 +138,6 @@ class AzureNotebookManager(BaseNotebookManager):
raise web.HTTPError(400, u'Unexpected error while deleting notebook: %s' % e)
else:
self.delete_notebook_id(notebook_id)
+
+ def log_info(self):
+ self.log.info("Serving notebooks from Azure storage: %s, %s", self.account_name, self.container)
diff --git a/IPython/frontend/html/notebook/basenbmanager.py b/IPython/frontend/html/notebook/basenbmanager.py
index b9a72c3..b7e9297 100644
--- a/IPython/frontend/html/notebook/basenbmanager.py
+++ b/IPython/frontend/html/notebook/basenbmanager.py
@@ -16,13 +16,14 @@ Authors:
# Imports
#-----------------------------------------------------------------------------
+import os
import uuid
from tornado import web
from IPython.config.configurable import LoggingConfigurable
from IPython.nbformat import current
-from IPython.utils.traitlets import List, Dict
+from IPython.utils.traitlets import List, Dict, Unicode, TraitError
#-----------------------------------------------------------------------------
# Classes
@@ -30,6 +31,26 @@ from IPython.utils.traitlets import List, Dict
class BaseNotebookManager(LoggingConfigurable):
+ # Todo:
+ # The notebook_dir attribute is used to mean a couple of different things:
+ # 1. Where the notebooks are stored if FileNotebookManager is used.
+ # 2. The cwd of the kernel for a project.
+ # Right now we use this attribute in a number of different places and
+ # we are going to have to disentagle all of this.
+ notebook_dir = Unicode(os.getcwdu(), config=True, help="""
+ The directory to use for notebooks.
+ """)
+ def _notebook_dir_changed(self, name, old, new):
+ """do a bit of validation of the notebook dir"""
+ if os.path.exists(new) and not os.path.isdir(new):
+ raise TraitError("notebook dir %r is not a directory" % new)
+ if not os.path.exists(new):
+ self.log.info("Creating notebook dir %s", new)
+ try:
+ os.mkdir(new)
+ except:
+ raise TraitError("Couldn't create notebook dir %r" % new)
+
allowed_formats = List([u'json',u'py'])
# Map notebook_ids to notebook names
@@ -179,3 +200,6 @@ class BaseNotebookManager(LoggingConfigurable):
nb.metadata.name = name
notebook_id = self.write_notebook_object(nb)
return notebook_id
+
+ def log_info(self):
+ self.log.info("Serving notebooks")
\ No newline at end of file
diff --git a/IPython/frontend/html/notebook/filenbmanager.py b/IPython/frontend/html/notebook/filenbmanager.py
index eb0c062..6389ec1 100644
--- a/IPython/frontend/html/notebook/filenbmanager.py
+++ b/IPython/frontend/html/notebook/filenbmanager.py
@@ -32,20 +32,6 @@ from IPython.utils.traitlets import Unicode, Dict, Bool, TraitError
#-----------------------------------------------------------------------------
class FileNotebookManager(BaseNotebookManager):
-
- notebook_dir = Unicode(os.getcwdu(), config=True, help="""
- The directory to use for notebooks.
- """)
- def _notebook_dir_changed(self, name, old, new):
- """do a bit of validation of the notebook dir"""
- if os.path.exists(new) and not os.path.isdir(new):
- raise TraitError("notebook dir %r is not a directory" % new)
- if not os.path.exists(new):
- self.log.info("Creating notebook dir %s", new)
- try:
- os.mkdir(new)
- except:
- raise TraitError("Couldn't create notebook dir %r" % new)
save_script = Bool(False, config=True,
help="""Automatically create a Python script when saving the notebook.
@@ -86,19 +72,19 @@ class FileNotebookManager(BaseNotebookManager):
def new_notebook_id(self, name):
"""Generate a new notebook_id for a name and store its mappings."""
- notebook_id = super(BaseNotebookManager, self).new_notebook_id(name)
+ notebook_id = super(FileNotebookManager, self).new_notebook_id(name)
self.rev_mapping[name] = notebook_id
return notebook_id
def delete_notebook_id(self, notebook_id):
"""Delete a notebook's id in the mapping."""
- super(BaseNotebookManager, self).delete_notebook_id(notebook_id)
name = self.mapping[notebook_id]
+ super(FileNotebookManager, self).delete_notebook_id(notebook_id)
del self.rev_mapping[name]
def notebook_exists(self, notebook_id):
"""Does a notebook exist?"""
- exists = super(BaseNotebookManager, self).notebook_exists(notebook_id)
+ exists = super(FileNotebookManager, self).notebook_exists(notebook_id)
if not exists:
return False
path = self.get_path_by_name(self.mapping[notebook_id])
@@ -205,3 +191,6 @@ class FileNotebookManager(BaseNotebookManager):
else:
i = i+1
return name
+
+ def log_info(self):
+ self.log.info("Serving notebooks from local directory: %s", self.notebook_manager.notebook_dir)
diff --git a/IPython/frontend/html/notebook/notebookapp.py b/IPython/frontend/html/notebook/notebookapp.py
index 4fd525c..3980443 100644
--- a/IPython/frontend/html/notebook/notebookapp.py
+++ b/IPython/frontend/html/notebook/notebookapp.py
@@ -408,7 +408,7 @@ class NotebookApp(BaseIPythonApplication):
else:
self.log.info("Using MathJax: %s", new)
- notebook_manager_class = DottedObjectName('IPython.frontend.html.notebook.notebookmanager.NotebookManager',
+ notebook_manager_class = DottedObjectName('IPython.frontend.html.notebook.filenbmanager.FileNotebookManager',
config=True,
help='The notebook manager class to use.')
@@ -440,7 +440,7 @@ class NotebookApp(BaseIPythonApplication):
)
kls = import_item(self.notebook_manager_class)
self.notebook_manager = kls(config=self.config, log=self.log)
- self.log.info("Serving notebooks from %s", self.notebook_manager.notebook_dir)
+ self.notebook_manager.log_info()
self.notebook_manager.load_notebook_names()
self.cluster_manager = ClusterManager(config=self.config, log=self.log)
self.cluster_manager.update_profiles()