diff --git a/IPython/html/base/handlers.py b/IPython/html/base/handlers.py index f0ca195..f63438a 100644 --- a/IPython/html/base/handlers.py +++ b/IPython/html/base/handlers.py @@ -355,6 +355,14 @@ class TrailingSlashHandler(web.RequestHandler): self.redirect(self.request.uri.rstrip('/')) #----------------------------------------------------------------------------- +# URL pattern fragments for re-use +#----------------------------------------------------------------------------- + +path_regex = r"(?P(?:/.*)*)" +notebook_name_regex = r"(?P[^/]+\.ipynb)" +notebook_path_regex = "%s/%s" % (path_regex, notebook_name_regex) + +#----------------------------------------------------------------------------- # URL to handler mappings #----------------------------------------------------------------------------- diff --git a/IPython/html/nbconvert/handlers.py b/IPython/html/nbconvert/handlers.py index 6e51bb6..0d30c30 100644 --- a/IPython/html/nbconvert/handlers.py +++ b/IPython/html/nbconvert/handlers.py @@ -2,7 +2,7 @@ import os from tornado import web -from ..base.handlers import IPythonHandler +from ..base.handlers import IPythonHandler, notebook_path_regex from IPython.nbformat.current import to_notebook_json from IPython.nbconvert.exporters.export import exporter_map from IPython.utils import tz @@ -74,12 +74,10 @@ class NbconvertPostHandler(IPythonHandler): #----------------------------------------------------------------------------- _format_regex = r"(?P\w+)" -_path_regex = r"(?P(?:/.*)*)" -_notebook_name_regex = r"(?P[^/]+\.ipynb)" -_notebook_path_regex = "%s/%s" % (_path_regex, _notebook_name_regex) + default_handlers = [ - (r"/nbconvert/%s%s" % (_format_regex, _notebook_path_regex), + (r"/nbconvert/%s%s" % (_format_regex, notebook_path_regex), NbconvertFileHandler), (r"/nbconvert/%s" % _format_regex, NbconvertPostHandler), ] \ No newline at end of file diff --git a/IPython/html/notebook/handlers.py b/IPython/html/notebook/handlers.py index f3174b7..e442d00 100644 --- a/IPython/html/notebook/handlers.py +++ b/IPython/html/notebook/handlers.py @@ -20,8 +20,7 @@ import os from tornado import web HTTPError = web.HTTPError -from ..base.handlers import IPythonHandler -from ..services.notebooks.handlers import _notebook_path_regex, _path_regex +from ..base.handlers import IPythonHandler, notebook_path_regex, path_regex from ..utils import url_path_join, url_escape #----------------------------------------------------------------------------- @@ -85,7 +84,7 @@ class NotebookRedirectHandler(IPythonHandler): default_handlers = [ - (r"/notebooks%s" % _notebook_path_regex, NotebookHandler), - (r"/notebooks%s" % _path_regex, NotebookRedirectHandler), + (r"/notebooks%s" % notebook_path_regex, NotebookHandler), + (r"/notebooks%s" % path_regex, NotebookRedirectHandler), ] diff --git a/IPython/html/services/notebooks/handlers.py b/IPython/html/services/notebooks/handlers.py index 69d0ac4..27e74d7 100644 --- a/IPython/html/services/notebooks/handlers.py +++ b/IPython/html/services/notebooks/handlers.py @@ -23,7 +23,9 @@ from tornado import web from IPython.html.utils import url_path_join, url_escape from IPython.utils.jsonutil import date_default -from IPython.html.base.handlers import IPythonHandler, json_errors +from IPython.html.base.handlers import (IPythonHandler, json_errors, + notebook_path_regex, path_regex, + notebook_name_regex) #----------------------------------------------------------------------------- # Notebook web service handlers @@ -264,17 +266,14 @@ class ModifyNotebookCheckpointsHandler(IPythonHandler): #----------------------------------------------------------------------------- -_path_regex = r"(?P(?:/.*)*)" _checkpoint_id_regex = r"(?P[\w-]+)" -_notebook_name_regex = r"(?P[^/]+\.ipynb)" -_notebook_path_regex = "%s/%s" % (_path_regex, _notebook_name_regex) default_handlers = [ - (r"/api/notebooks%s/checkpoints" % _notebook_path_regex, NotebookCheckpointsHandler), - (r"/api/notebooks%s/checkpoints/%s" % (_notebook_path_regex, _checkpoint_id_regex), + (r"/api/notebooks%s/checkpoints" % notebook_path_regex, NotebookCheckpointsHandler), + (r"/api/notebooks%s/checkpoints/%s" % (notebook_path_regex, _checkpoint_id_regex), ModifyNotebookCheckpointsHandler), - (r"/api/notebooks%s" % _notebook_path_regex, NotebookHandler), - (r"/api/notebooks%s" % _path_regex, NotebookHandler), + (r"/api/notebooks%s" % notebook_path_regex, NotebookHandler), + (r"/api/notebooks%s" % path_regex, NotebookHandler), ] diff --git a/IPython/html/tree/handlers.py b/IPython/html/tree/handlers.py index 1ec33d5..03820ca 100644 --- a/IPython/html/tree/handlers.py +++ b/IPython/html/tree/handlers.py @@ -18,9 +18,8 @@ Authors: import os from tornado import web -from ..base.handlers import IPythonHandler +from ..base.handlers import IPythonHandler, notebook_path_regex, path_regex from ..utils import url_path_join, path2url, url2path, url_escape -from ..services.notebooks.handlers import _notebook_path_regex, _path_regex #----------------------------------------------------------------------------- # Handlers @@ -70,8 +69,8 @@ class TreeRedirectHandler(IPythonHandler): default_handlers = [ - (r"/tree%s" % _notebook_path_regex, TreeHandler), - (r"/tree%s" % _path_regex, TreeHandler), + (r"/tree%s" % notebook_path_regex, TreeHandler), + (r"/tree%s" % path_regex, TreeHandler), (r"/tree", TreeHandler), (r"/", TreeRedirectHandler), ]