8000 Merge pull request #3058 from minrk/redirect · ipython/ipython@c07e21f · GitHub
[go: up one dir, main page]

Skip to content

Commit c07e21f

Browse files
committed
Merge pull request #3058 from minrk/redirect
add redirect handler for notebooks by name
2 parents 4be107e + 791f7a2 commit c07e21f

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

IPython/frontend/html/notebook/handlers.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -609,6 +609,20 @@ def on_close(self):
609609
# Notebook web service handlers
610610
#-----------------------------------------------------------------------------
611611

612+
class NotebookRedirectHandler(AuthenticatedHandler):
613+
614+
@authenticate_unless_readonly
615+
def get(self, notebook_name):
616+
app = self.application
617+
# strip trailing .ipynb:
618+
notebook_name = os.path.splitext(notebook_name)[0]
619+
notebook_id = app.notebook_manager.rev_mapping.get(notebook_name, '')
620+
if notebook_id:
621+
url = self.settings.get('base_project_ur 10000 l', '/') + notebook_id
622+
return self.redirect(url)
623+
else:
624+
raise HTTPError(404)
625+
612626
class NotebookRootHandler(AuthenticatedHandler):
613627

614628
@authenticate_unless_readonly

IPython/frontend/html/notebook/notebookapp.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
ShellHandler, NotebookRootHandler, NotebookHandler, NotebookCopyHandler,
5353
RSTHandler, AuthenticatedFileHandler, PrintNotebookHandler,
5454
MainClusterHandler, ClusterProfileHandler, ClusterActionHandler,
55-
FileFindHandler,
55+
FileFindHandler, NotebookRedirectHandler,
5656
)
5757
from .nbmanager import NotebookManager
5858
from .filenbmanager import FileNotebookManager
@@ -86,6 +86,7 @@
8686
_kernel_id_regex = r"(?P<kernel_id>\w+-\w+-\w+-\w+-\w+)"
8787
_kernel_action_regex = r"(?P<action>restart|interrupt)"
8888
_notebook_id_regex = r"(?P<notebook_id>\w+-\w+-\w+-\w+-\w+)"
89+
_notebook_name_regex = r"(?P<notebook_name>.+\.ipynb)"
8990
_profile_regex = r"(?P<profile>[^\/]+)" # there is almost no text that is invalid
9091
_cluster_action_regex = r"(?P<action>start|stop)"
9192

@@ -136,6 +137,7 @@ def __init__(self, ipython_app, kernel_manager, notebook_manager,
136137
(r"/logout", LogoutHandler),
137138
(r"/new", NewHandler),
138139
(r"/%s" % _notebook_id_regex, NamedNotebookHandler),
140+
(r"/%s" % _notebook_name_regex, NotebookRedirectHandler),
139141
(r"/%s/copy" % _notebook_id_regex, NotebookCopyHandler),
140142
(r"/%s/print" % _notebook_id_regex, PrintNotebookHandler),
141143
(r"/kernels", MainKernelHandler),
@@ -170,6 +172,7 @@ def __init__(self, ipython_app, kernel_manager, notebook_manager,
170172
cookie_secret=os.urandom(1024),
171173
login_url=url_path_join(base_project_url,'/login'),
172174
cookie_name='username-%s' % uuid.uuid4(),
175+
base_project_url = base_project_url,
173176
)
174177

175178
# allow custom overrides for the tornado web app.

0 commit comments

Comments
 (0)
0