From 6f7eb47fe69b7dfd78b47ed027cd290af08de862 Mon Sep 17 00:00:00 2001 From: Jiri Kuncar Date: Wed, 22 Nov 2017 15:58:08 +0100 Subject: [PATCH 1/2] Revert "notebook: fix file saving" This reverts commit 2a32eda4cddfdb4a5d8c577de156301a5b2cd4d3. --- renga/notebook.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/renga/notebook.py b/renga/notebook.py index 0c3d46406f..cbb1beff7f 100644 --- a/renga/notebook.py +++ b/renga/notebook.py @@ -310,8 +310,15 @@ def save(self, model, path): if model['type'] == 'notebook': nb = nbformat.from_dict(model['content']) + + items = path.strip('/').split('/') + resource = self._resolve_path('/'.join(items[:-1])) + new_file = resource._obj.files.create(items[-1]) + path = (resource / str(new_file.id))._path + self.check_and_sign(nb, path) self._save_notebook(path, nb) + elif model['type'] == 'file': self._save_file(path, model['content'], model.get('format')) elif model['type'] == 'directory': From 070114e475b6d365b85e3939daf0b6176119fbc2 Mon Sep 17 00:00:00 2001 From: Jiri Kuncar Date: Wed, 22 Nov 2017 16:12:04 +0100 Subject: [PATCH 2/2] notebook: handle file creation error --- renga/notebook.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/renga/notebook.py b/renga/notebook.py index cbb1beff7f..d0c709317c 100644 --- a/renga/notebook.py +++ b/renga/notebook.py @@ -210,7 +210,6 @@ def _section_resolver(obj, path): return obj[path], None sections = {'inputs': _section_resolver, 'outputs': _section_resolver} - assert path in sections return getattr(obj, path), sections[path] @@ -220,7 +219,6 @@ def _section_resolver(obj, path): # pragma: no cover 'buckets': _buckets_resolver, 'current_context': _current_context_resolver } - assert path in sections return getattr(obj, path), sections[path] @@ -278,7 +276,7 @@ def exists(self, path): try: self._resolve_path(path) return True - except (KeyError, ValueError): + except (AttributeError, KeyError, ValueError): return False def get(self, path, content=True, type=None, format=None): @@ -313,6 +311,11 @@ def save(self, model, path): items = path.strip('/').split('/') resource = self._resolve_path('/'.join(items[:-1])) + + if not hasattr(resource._obj, 'files'): + raise web.HTTPError( + 403, "Notebook can only be created in a bucket.") + new_file = resource._obj.files.create(items[-1]) path = (resource / str(new_file.id))._path