Show More
@@ -25,7 +25,7 b' from tornado import web' | |||||
25 |
|
25 | |||
26 | from IPython.config.configurable import LoggingConfigurable |
|
26 | from IPython.config.configurable import LoggingConfigurable | |
27 | from IPython.nbformat import current |
|
27 | from IPython.nbformat import current | |
28 | from IPython.utils.traitlets import Unicode, List, Dict |
|
28 | from IPython.utils.traitlets import Unicode, List, Dict, Bool | |
29 |
|
29 | |||
30 |
|
30 | |||
31 | #----------------------------------------------------------------------------- |
|
31 | #----------------------------------------------------------------------------- | |
@@ -38,6 +38,15 b' class NotebookManager(LoggingConfigurable):' | |||||
38 | notebook_dir = Unicode(os.getcwd(), config=True, help=""" |
|
38 | notebook_dir = Unicode(os.getcwd(), config=True, help=""" | |
39 | The directory to use for notebooks. |
|
39 | The directory to use for notebooks. | |
40 | """) |
|
40 | """) | |
|
41 | ||||
|
42 | save_script = Bool(False, config=True, | |||
|
43 | help="""Also save notebooks as a Python script. | |||
|
44 | ||||
|
45 | For easier use of import/%loadpy across notebooks, a <notebook-name>.py | |||
|
46 | script will be created next to any <notebook-name>.ipynb on each save. | |||
|
47 | """ | |||
|
48 | ) | |||
|
49 | ||||
41 | filename_ext = Unicode(u'.ipynb') |
|
50 | filename_ext = Unicode(u'.ipynb') | |
42 | allowed_formats = List([u'json',u'py']) |
|
51 | allowed_formats = List([u'json',u'py']) | |
43 |
|
52 | |||
@@ -199,10 +208,23 b' class NotebookManager(LoggingConfigurable):' | |||||
199 | current.write(nb, f, u'json') |
|
208 | current.write(nb, f, u'json') | |
200 | except: |
|
209 | except: | |
201 | raise web.HTTPError(400, u'Unexpected error while saving notebook') |
|
210 | raise web.HTTPError(400, u'Unexpected error while saving notebook') | |
|
211 | # save .py script as well | |||
|
212 | if self.save_script: | |||
|
213 | pypath = os.path.splitext(path)[0] + '.py' | |||
|
214 | try: | |||
|
215 | with open(pypath,'w') as f: | |||
|
216 | current.write(nb, f, u'py') | |||
|
217 | except: | |||
|
218 | raise web.HTTPError(400, u'Unexpected error while saving notebook as script') | |||
|
219 | ||||
202 | if old_name != new_name: |
|
220 | if old_name != new_name: | |
203 | old_path = self.get_path_by_name(old_name) |
|
221 | old_path = self.get_path_by_name(old_name) | |
204 | if os.path.isfile(old_path): |
|
222 | if os.path.isfile(old_path): | |
205 | os.unlink(old_path) |
|
223 | os.unlink(old_path) | |
|
224 | if self.save_script: | |||
|
225 | old_pypath = os.path.splitext(old_path)[0] + '.py' | |||
|
226 | if os.path.isfile(old_pypath): | |||
|
227 | os.unlink(old_pypath) | |||
206 | self.mapping[notebook_id] = new_name |
|
228 | self.mapping[notebook_id] = new_name | |
207 | self.rev_mapping[new_name] = notebook_id |
|
229 | self.rev_mapping[new_name] = notebook_id | |
208 |
|
230 |
General Comments 0
You need to be logged in to leave comments.
Login now