diff --git a/IPython/html/services/notebooks/filenbmanager.py b/IPython/html/services/notebooks/filenbmanager.py
index 9f93f95..974696a 100644
--- a/IPython/html/services/notebooks/filenbmanager.py
+++ b/IPython/html/services/notebooks/filenbmanager.py
@@ -86,11 +86,11 @@ class FileNotebookManager(NotebookManager):
def list_notebooks(self, path):
"""List all notebooks in the notebook dir."""
notebook_names = self.get_notebook_names(path)
- notebook_mapping = []
+ notebooks = []
for name in notebook_names:
model = self.notebook_model(name, path, content=False)
- notebook_mapping.append(model)
- return notebook_mapping
+ notebooks.append(model)
+ return notebooks
def change_notebook(self, data, notebook_name, notebook_path=None):
"""Changes notebook"""
diff --git a/IPython/html/services/notebooks/nbmanager.py b/IPython/html/services/notebooks/nbmanager.py
index 9f57723..318ebbc 100644
--- a/IPython/html/services/notebooks/nbmanager.py
+++ b/IPython/html/services/notebooks/nbmanager.py
@@ -73,11 +73,13 @@ class NotebookManager(LoggingConfigurable):
return name, path
def url_encode(self, path):
- parts = path.split('/')
+ parts = os.path.split(path)
+ #parts = path.split('/')
return os.path.join(*[quote(p) for p in parts])
def url_decode(self, path):
- parts = path.split('/')
+ parts = os.path.split(path)
+ #parts = path.split('/')
return os.path.join(*[unquote(p) for p in parts])
def _notebook_dir_changed(self, new):
@@ -127,11 +129,6 @@ class NotebookManager(LoggingConfigurable):
"""
raise NotImplementedError('must be implemented in a subclass')
-
- def notebook_exists(self, notebook_path):
- """Does a notebook exist?"""
-
-
def notebook_model(self, notebook_name, notebook_path=None, content=True):
""" Creates the standard notebook model """
last_modified, contents = self.read_notebook_object(notebook_name, notebook_path)
diff --git a/IPython/html/services/notebooks/tests/test_nbmanager.py b/IPython/html/services/notebooks/tests/test_nbmanager.py
index ab633df..b4accf5 100644
--- a/IPython/html/services/notebooks/tests/test_nbmanager.py
+++ b/IPython/html/services/notebooks/tests/test_nbmanager.py
@@ -35,12 +35,12 @@ class TestFileNotebookManager(TestCase):
class TestNotebookManager(TestCase):
def test_named_notebook_path(self):
nm = NotebookManager()
-
+
# doesn't end with ipynb, should just be path
name, path = nm.named_notebook_path('hello')
self.assertEqual(name, None)
self.assertEqual(path, '/hello/')
-
+
name, path = nm.named_notebook_path('/')
self.assertEqual(name, None)
self.assertEqual(path, '/')
@@ -48,17 +48,43 @@ class TestNotebookManager(TestCase):
name, path = nm.named_notebook_path('hello.ipynb')
self.assertEqual(name, 'hello.ipynb')
self.assertEqual(path, '/')
-
+
name, path = nm.named_notebook_path('/hello.ipynb')
self.assertEqual(name, 'hello.ipynb')
self.assertEqual(path, '/')
-
+
name, path = nm.named_notebook_path('/this/is/a/path/hello.ipynb')
self.assertEqual(name, 'hello.ipynb')
self.assertEqual(path, '/this/is/a/path/')
-
+
name, path = nm.named_notebook_path('path/without/leading/slash/hello.ipynb')
self.assertEqual(name, 'hello.ipynb')
self.assertEqual(path, '/path/without/leading/slash/')
+ def test_url_encode(self):
+ nm = NotebookManager()
+
+ # changes path or notebook name with special characters to url encoding
+ # these tests specifically encode paths with spaces
+ path = nm.url_encode('/this is a test/for spaces/')
+ self.assertEqual(path, '/this%20is%20a%20test/for%20spaces/')
+
+ path = nm.url_encode('notebook with space.ipynb')
+ self.assertEqual(path, 'notebook%20with%20space.ipynb')
+
+ path = nm.url_encode('/path with a/notebook and space.ipynb')
+ self.assertEqual(path, '/path%20with%20a/notebook%20and%20space.ipynb')
+ def test_url_decode(self):
+ nm = NotebookManager()
+
+ # decodes a url string to a plain string
+ # these tests decode paths with spaces
+ path = nm.url_decode('/this%20is%20a%20test/for%20spaces/')
+ self.assertEqual(path, '/this is a test/for spaces/')
+
+ path = nm.url_decode('notebook%20with%20space.ipynb')
+ self.assertEqual(path, 'notebook with space.ipynb')
+
+ path = nm.url_decode('/path%20with%20a/notebook%20and%20space.ipynb')
+ self.assertEqual(path, '/path with a/notebook and space.ipynb')