Handle notebook downloads through the /files URL.

Brian E. Granger 13 years ago committed by MinRK
parent 59901ce88c
commit 51fc769edd

@ -268,6 +268,10 @@ class AuthenticatedFileHandler(IPythonHandler, web.StaticFileHandler):
@web.authenticated
def get(self, path):
if os.path.splitext(path)[1] == '.ipynb':
name = os.path.basename(path)
self.set_header('Content-Type', 'application/json')
self.set_header('Content-Disposition','attachment; filename="%s"' % name)
return web.StaticFileHandler.get(self, path)
@ -399,11 +403,6 @@ class FileFindHandler(web.StaticFileHandler):
self.set_status(304)
return
if os.path.splitext(path)[1] == '.ipynb':
name = os.path.basename(path)
self.set_header('Content-Type', 'application/json')
self.set_header('Content-Disposition','attachment; filename="%s"' % name)
with open(abspath, "rb") as file:
data = file.read()
hasher = hashlib.sha1()

@ -64,19 +64,7 @@ class NotebookHandler(IPythonHandler):
# get and return notebook representation
model = nbm.get_notebook_model(name, path)
self.set_header(u'Last-Modified', model[u'last_modified'])
if self.get_argument('download', default='False') == 'True':
format = self.get_argument('format', default='json')
if format != u'json':
self.set_header('Content-Type', 'application/json')
raise web.HTTPError(400, "Unrecognized format: %s" % format)
self.set_header('Content-Disposition',
'attachment; filename="%s"' % name
)
self.finish(json.dumps(model['content'], default=date_default))
else:
self.finish(json.dumps(model, default=date_default))
self.finish(json.dumps(model, default=date_default))
@web.authenticated
@json_errors

@ -95,9 +95,9 @@ var IPython = (function (IPython) {
var url = utils.url_path_join(
that.baseProjectUrl(),
'api/notebooks',
'files',
that.notebookPath(),
notebook_name + '.ipynb?format=json&download=True'
notebook_name + '.ipynb'
);
window.location.assign(url);
});

Loading…
Cancel
Save