diff --git a/IPython/html/notebook/handlers.py b/IPython/html/notebook/handlers.py
index fd0e3fac4..673001727 100644
--- a/IPython/html/notebook/handlers.py
+++ b/IPython/html/notebook/handlers.py
@@ -17,10 +17,10 @@ Authors:
#-----------------------------------------------------------------------------
import os
+import json
+
from tornado import web
HTTPError = web.HTTPError
-from zmq.utils import jsonapi
-
from ..base.handlers import IPythonHandler
from ..services.notebooks.handlers import _notebook_path_regex, _path_regex
@@ -34,33 +34,14 @@ from urllib import quote
class NotebookHandler(IPythonHandler):
- @web.authenticated
- def post(self):
- """post either creates a new notebook if no json data is
- sent to the server, or copies the data and returns a
- copied notebook."""
- nbm = self.notebook_manager
- data=self.request.body
- if data:
- data = jsonapi.loads(data)
- notebook_name = nbm.copy_notebook(data['name'])
- else:
- notebook_name = nbm.new_notebook()
- self.finish(jsonapi.dumps({"name": notebook_name}))
-
-
-class NamedNotebookHandler(IPythonHandler):
-
@web.authenticated
def get(self, path='', name=None):
"""get renders the notebook template if a name is given, or
redirects to the '/files/' handler if the name is not given."""
nbm = self.notebook_manager
if name is None:
- url = url_path_join(self.base_project_url, 'files', path)
- self.redirect(url)
- return
-
+ raise web.HTTPError(500, "This shouldn't be accessible: %s" % self.request.uri)
+
# a .ipynb filename was given
if not nbm.notebook_exists(name, path):
raise web.HTTPError(404, u'Notebook does not exist: %s/%s' % (path, name))
@@ -75,20 +56,17 @@ class NamedNotebookHandler(IPythonHandler):
)
)
- @web.authenticated
- def post(self, path='', name=None):
- """post either creates a new notebook if no json data is
- sent to the server, or copies the data and returns a
- copied notebook in the location given by 'notebook_path."""
+class NotebookRedirectHandler(IPythonHandler):
+ def get(self, path=''):
nbm = self.notebook_manager
- data = self.request.body
- if data:
- data = jsonapi.loads(data)
- notebook_name = nbm.copy_notebook(data['name'], notebook_path)
+ if nbm.path_exists(path):
+ # it's a *directory*, redirect to /tree
+ url = url_path_join(self.base_project_url, 'tree', path)
else:
- notebook_name = nbm.new_notebook(notebook_path)
- self.finish(jsonapi.dumps({"name": notebook_name}))
-
+ # otherwise, redirect to /files
+ # TODO: This should check if it's actually a file
+ url = url_path_join(self.base_project_url, 'files', path)
+ self.redirect(url)
#-----------------------------------------------------------------------------
# URL to handler mappings
@@ -96,8 +74,7 @@ class NamedNotebookHandler(IPythonHandler):
default_handlers = [
- (r"/notebooks/?%s" % _notebook_path_regex, NamedNotebookHandler),
- (r"/notebooks/?%s" % _path_regex, NamedNotebookHandler),
- (r"/notebooks/?", NotebookHandler),
+ (r"/notebooks/?%s" % _notebook_path_regex, NotebookHandler),
+ (r"/notebooks/?%s" % _path_regex, NotebookRedirectHandler),
]