From 0784df1b9d0f202298f7659d06fb75aec5559da3 Mon Sep 17 00:00:00 2001 From: "Brian E. Granger" Date: Thu, 18 Aug 2011 23:11:50 -0700 Subject: [PATCH] Making JSON the default .ipynb format. --- IPython/frontend/html/notebook/handlers.py | 3 -- .../frontend/html/notebook/notebookmanager.py | 46 ++++++------------- .../html/notebook/static/js/notebooklist.js | 8 ++-- .../html/notebook/templates/notebook.html | 3 +- 4 files changed, 18 insertions(+), 42 deletions(-) diff --git a/IPython/frontend/html/notebook/handlers.py b/IPython/frontend/html/notebook/handlers.py index 93d056861..c006e460a 100644 --- a/IPython/frontend/html/notebook/handlers.py +++ b/IPython/frontend/html/notebook/handlers.py @@ -282,9 +282,6 @@ class NotebookHandler(web.RequestHandler): if format == u'json': self.set_header('Content-Type', 'application/json') self.set_header('Content-Disposition','attachment; filename="%s.json"' % name) - elif format == u'xml': - self.set_header('Content-Type', 'application/xml') - self.set_header('Content-Disposition','attachment; filename="%s.ipynb"' % name) elif format == u'py': self.set_header('Content-Type', 'application/x-python') self.set_header('Content-Disposition','attachment; filename="%s.py"' % name) diff --git a/IPython/frontend/html/notebook/notebookmanager.py b/IPython/frontend/html/notebook/notebookmanager.py index 74017d48f..a02dbc81e 100644 --- a/IPython/frontend/html/notebook/notebookmanager.py +++ b/IPython/frontend/html/notebook/notebookmanager.py @@ -39,7 +39,7 @@ class NotebookManager(LoggingConfigurable): The directory to use for notebooks. """) filename_ext = Unicode(u'.ipynb') - allowed_formats = List([u'json',u'xml',u'py']) + allowed_formats = List([u'json',u'py']) # Map notebook_ids to notebook names mapping = Dict() @@ -120,19 +120,15 @@ class NotebookManager(LoggingConfigurable): raise web.HTTPError(404) info = os.stat(path) last_modified = datetime.datetime.utcfromtimestamp(info.st_mtime) - try: - with open(path,'r') as f: - s = f.read() - try: - # v2 and later have xml in the .ipynb files. - nb = current.reads(s, 'xml') - except: - # v1 had json in the .ipynb files. - nb = current.reads(s, 'json') - # v1 notebooks don't have a name field, so use the filename. - nb.name = os.path.split(path)[-1].split(u'.')[0] - except: - raise web.HTTPError(404) + with open(path,'r') as f: + s = f.read() + try: + # v1 and v2 and json in the .ipynb files. + nb = current.reads(s, u'json') + except: + raise web.HTTPError(404) + if 'name' not in nb: + nb.name = os.path.split(path)[-1].split(u'.')[0] return last_modified, nb def save_new_notebook(self, data, name=None, format=u'json'): @@ -147,14 +143,7 @@ class NotebookManager(LoggingConfigurable): try: nb = current.reads(data, format) except: - if format == u'xml': - # v1 notebooks might come in with a format='xml' but be json. - try: - nb = current.reads(data, u'json') - except: - raise web.HTTPError(400) - else: - raise web.HTTPError(400) + raise web.HTTPError(400) if name is None: try: @@ -175,14 +164,7 @@ class NotebookManager(LoggingConfigurable): try: nb = current.reads(data, format) except: - if format == u'xml': - # v1 notebooks might come in with a format='xml' but be json. - try: - nb = current.reads(data, u'json') - except: - raise web.HTTPError(400) - else: - raise web.HTTPError(400) + raise web.HTTPError(400) if name is not None: nb.name = name @@ -200,7 +182,7 @@ class NotebookManager(LoggingConfigurable): path = self.get_path_by_name(new_name) try: with open(path,'w') as f: - current.write(nb, f, u'xml') + current.write(nb, f, u'json') except: raise web.HTTPError(400) if old_name != new_name: @@ -231,6 +213,6 @@ class NotebookManager(LoggingConfigurable): notebook_id = self.new_notebook_id(name) nb = current.new_notebook(name=name) with open(path,'w') as f: - current.write(nb, f, u'xml') + current.write(nb, f, u'json') return notebook_id diff --git a/IPython/frontend/html/notebook/static/js/notebooklist.js b/IPython/frontend/html/notebook/static/js/notebooklist.js index 5aa380a1c..2a0c6d90e 100644 --- a/IPython/frontend/html/notebook/static/js/notebooklist.js +++ b/IPython/frontend/html/notebook/static/js/notebooklist.js @@ -39,8 +39,8 @@ var IPython = (function (IPython) { var fname = f.name.split('.'); var nbname = fname[0]; var nbformat = fname[1]; - if (nbformat === 'ipynb') {nbformat = 'xml';}; - if (nbformat === 'xml' || nbformat === 'py' || nbformat === 'json') { + if (nbformat === 'ipynb') {nbformat = 'json';}; + if (nbformat === 'py' || nbformat === 'json') { var item = that.new_notebook_item(0); that.add_name_input(nbname, item); item.data('nbformat', nbformat); @@ -198,9 +198,7 @@ var IPython = (function (IPython) { var nbformat = item.data('nbformat'); var nbdata = item.data('nbdata'); var content_type = 'text/plain'; - if (nbformat === 'xml') { - content_type = 'application/xml'; - } else if (nbformat === 'json') { + if (nbformat === 'json') { content_type = 'application/json'; } else if (nbformat === 'py') { content_type = 'application/x-python'; diff --git a/IPython/frontend/html/notebook/templates/notebook.html b/IPython/frontend/html/notebook/templates/notebook.html index 7e52294e6..f0afcc91c 100644 --- a/IPython/frontend/html/notebook/templates/notebook.html +++ b/IPython/frontend/html/notebook/templates/notebook.html @@ -62,7 +62,6 @@
@@ -72,7 +71,7 @@ - +