Skip to content

Commit

Permalink
Merge pull request #5077 from michalc/contents-manager-get-can-return…
Browse files Browse the repository at this point in the history
…-future

Allow contents manager get to return future
  • Loading branch information
takluyver authored Nov 24, 2019
2 parents 10c7d2a + b7a354d commit 1d76105
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 5 deletions.
6 changes: 4 additions & 2 deletions notebook/nbconvert/handlers.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,14 @@
import os
import zipfile

from tornado import web, escape
from tornado import gen, web, escape
from tornado.log import app_log

from ..base.handlers import (
IPythonHandler, FilesRedirectHandler,
path_regex,
)
from ..utils import maybe_future
from nbformat import from_dict

from ipython_genutils.py3compat import cast_bytes
Expand Down Expand Up @@ -86,6 +87,7 @@ def content_security_policy(self):
"; sandbox allow-scripts"

@web.authenticated
@gen.coroutine
def get(self, format, path):

exporter = get_exporter(format, config=self.config, log=self.log)
Expand All @@ -99,7 +101,7 @@ def get(self, format, path):
else:
ext_resources_dir = None

model = self.contents_manager.get(path=path)
model = yield maybe_future(self.contents_manager.get(path=path))
name = model['name']
if model['type'] != 'notebook':
# not a notebook, redirect to files
Expand Down
11 changes: 8 additions & 3 deletions notebook/notebook/handlers.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,17 @@

from collections import namedtuple
import os
from tornado import web
from tornado import (
gen, web,
)
HTTPError = web.HTTPError

from ..base.handlers import (
IPythonHandler, FilesRedirectHandler, path_regex,
)
from ..utils import url_escape
from ..utils import (
maybe_future, url_escape,
)
from ..transutils import _


Expand Down Expand Up @@ -68,6 +72,7 @@ def get_frontend_exporters():
class NotebookHandler(IPythonHandler):

@web.authenticated
@gen.coroutine
def get(self, path):
"""get renders the notebook template if a name is given, or
redirects to the '/files/' handler if the name is not given."""
Expand All @@ -76,7 +81,7 @@ def get(self, path):

# will raise 404 on not found
try:
model = cm.get(path, content=False)
model = yield maybe_future(cm.get(path, content=False))
except web.HTTPError as e:
if e.status_code == 404 and 'files' in path.split('/'):
# 404, but '/files/' in URL, let FilesRedirect take care of it
Expand Down

0 comments on commit 1d76105

Please sign in to comment.