diff --git a/IPython/html/services/notebooks/filenbmanager.py b/IPython/html/services/notebooks/filenbmanager.py
index bac4de2..f0ce2a1 100644
--- a/IPython/html/services/notebooks/filenbmanager.py
+++ b/IPython/html/services/notebooks/filenbmanager.py
@@ -153,6 +153,38 @@ class FileNotebookManager(NotebookManager):
nbpath = self.get_os_path(name, path=path)
return os.path.isfile(nbpath)
+ def list_dirs(self, path):
+ """List the directories for a given API style path."""
+ path = path.strip('/')
+ os_path = self.get_os_path('', path)
+ dir_names = os.listdir(os_path)
+ dirs = []
+ for name in dir_names:
+ os_path = self.get_os_path(name, path)
+ if os.path.isdir(os_path) and not name.startswith('.'):
+ model = self.get_dir_model(name, path)
+ dirs.append(model)
+ dirs = sorted(dirs, key=lambda item: item['name'])
+ return dirs
+
+ def get_dir_model(self, name, path=''):
+ """Get the directory model given a directory name and its API style path"""
+ path = path.strip('/')
+ os_path = self.get_os_path(name, path)
+ if not os.path.isdir(os_path):
+ raise IOError('directory does not exist: %r' % os_path)
+ info = os.stat(os_path)
+ last_modified = tz.utcfromtimestamp(info.st_mtime)
+ created = tz.utcfromtimestamp(info.st_ctime)
+ # Create the notebook model.
+ model ={}
+ model['name'] = name
+ model['path'] = path
+ model['last_modified'] = last_modified
+ model['created'] = created
+ model['type'] = 'directory'
+ return model
+
def list_notebooks(self, path):
"""Returns a list of dictionaries that are the standard model
for all notebooks in the relative 'path'.
@@ -175,6 +207,7 @@ class FileNotebookManager(NotebookManager):
model = self.get_notebook_model(name, path, content=False)
notebooks.append(model)
notebooks = sorted(notebooks, key=lambda item: item['name'])
+ notebooks = self.list_dirs(path) + notebooks
return notebooks
def get_notebook_model(self, name, path='', content=True):
diff --git a/IPython/html/static/tree/js/notebooklist.js b/IPython/html/static/tree/js/notebooklist.js
index cc2f7fb..8fc5462 100644
--- a/IPython/html/static/tree/js/notebooklist.js
+++ b/IPython/html/static/tree/js/notebooklist.js
@@ -167,6 +167,7 @@ var IPython = (function (IPython) {
if (param !== undefined && param.msg) {
message = param.msg;
}
+ console.log(data);
var len = data.length;
this.clear_list();
if (len === 0) {