Show More
@@ -26,7 +26,7 import shutil | |||
|
26 | 26 | from tornado import web |
|
27 | 27 | |
|
28 | 28 | from .nbmanager import NotebookManager |
|
29 |
from IPython.nbformat import current |
|
|
29 | from IPython.nbformat import current | |
|
30 | 30 | from IPython.utils.traitlets import Unicode, Dict, Bool, TraitError |
|
31 | 31 | from IPython.utils import tz |
|
32 | 32 | |
@@ -213,11 +213,8 class FileNotebookManager(NotebookManager): | |||
|
213 | 213 | nb = current.read(f, u'json') |
|
214 | 214 | except Exception as e: |
|
215 | 215 | raise web.HTTPError(400, u"Unreadable Notebook: %s %s" % (os_path, e)) |
|
216 | self.mark_trusted_cells(nb, path, name) | |
|
216 | 217 | model['content'] = nb |
|
217 | trusted = self.notary.check_signature(nb) | |
|
218 | if not trusted: | |
|
219 | self.log.warn("Notebook %s/%s is not trusted", model['path'], model['name']) | |
|
220 | self.notary.mark_cells(nb, trusted) | |
|
221 | 218 | return model |
|
222 | 219 | |
|
223 | 220 | def save_notebook_model(self, model, name='', path=''): |
@@ -241,11 +238,7 class FileNotebookManager(NotebookManager): | |||
|
241 | 238 | os_path = self.get_os_path(new_name, new_path) |
|
242 | 239 | nb = current.to_notebook_json(model['content']) |
|
243 | 240 | |
|
244 | if self.notary.check_cells(nb): | |
|
245 | self.notary.sign(nb) | |
|
246 | else: | |
|
247 | self.log.warn("Saving untrusted notebook %s/%s", new_path, new_name) | |
|
248 | ||
|
241 | self.check_and_sign(nb, new_path, new_name) | |
|
249 | 242 | |
|
250 | 243 | if 'name' in nb['metadata']: |
|
251 | 244 | nb['metadata']['name'] = u'' |
@@ -46,6 +46,26 class NotebookManager(LoggingConfigurable): | |||
|
46 | 46 | def _notary_default(self): |
|
47 | 47 | return sign.NotebookNotary(parent=self) |
|
48 | 48 | |
|
49 | def check_and_sign(self, nb, path, name): | |
|
50 | """Check for trusted cells, and sign the notebook. | |
|
51 | ||
|
52 | Called as a part of saving notebooks. | |
|
53 | """ | |
|
54 | if self.notary.check_cells(nb): | |
|
55 | self.notary.sign(nb) | |
|
56 | else: | |
|
57 | self.log.warn("Saving untrusted notebook %s/%s", path, name) | |
|
58 | ||
|
59 | def mark_trusted_cells(self, nb, path, name): | |
|
60 | """Mark cells as trusted if the notebook signature matches. | |
|
61 | ||
|
62 | Called as a part of loading notebooks. | |
|
63 | """ | |
|
64 | trusted = self.notary.check_signature(nb) | |
|
65 | if not trusted: | |
|
66 | self.log.warn("Notebook %s/%s is not trusted", path, name) | |
|
67 | self.notary.mark_cells(nb, trusted) | |
|
68 | ||
|
49 | 69 | def path_exists(self, path): |
|
50 | 70 | """Does the API-style path (directory) actually exist? |
|
51 | 71 |
General Comments 0
You need to be logged in to leave comments.
Login now