##// END OF EJS Templates
Adding messages to HTTPError raising....
Brian E. Granger -
Show More
@@ -53,7 +53,7 class NamedNotebookHandler(web.RequestHandler):
53 53 def get(self, notebook_id):
54 54 nbm = self.application.notebook_manager
55 55 if not nbm.notebook_exists(notebook_id):
56 raise web.HTTPError(404)
56 raise web.HTTPError(404, u'Notebook does not exist: %s' % notebook_id)
57 57 self.render('notebook.html', notebook_id=notebook_id)
58 58
59 59
@@ -311,7 +311,7 class RSTHandler(web.RequestHandler):
311 311
312 312 def post(self):
313 313 if publish_string is None:
314 raise web.HTTPError(503)
314 raise web.HTTPError(503, u'docutils not available')
315 315 body = self.request.body.strip()
316 316 source = body
317 317 # template_path=os.path.join(os.path.dirname(__file__), u'templates', u'rst_template.html')
@@ -326,7 +326,7 class RSTHandler(web.RequestHandler):
326 326 settings_overrides=defaults
327 327 )
328 328 except:
329 raise web.HTTPError(400)
329 raise web.HTTPError(400, u'Invalid RST')
330 330 print html
331 331 self.set_header('Content-Type', 'text/html')
332 332 self.finish(html)
@@ -278,24 +278,20 class MappingKernelManager(KernelManager):
278 278
279 279 def kill_kernel(self, kernel_id):
280 280 """Kill a kernel and remove its notebook association."""
281 if kernel_id not in self:
282 raise web.HTTPError(404)
281 self._check_kernel_id(kernel_id)
283 282 super(MappingKernelManager, self).kill_kernel(kernel_id)
284 283 self.delete_mapping_for_kernel(kernel_id)
285 284 self.log.info("Kernel killed: %s" % kernel_id)
286 285
287 286 def interrupt_kernel(self, kernel_id):
288 287 """Interrupt a kernel."""
289 if kernel_id not in self:
290 raise web.HTTPError(404)
288 self._check_kernel_id(kernel_id)
291 289 super(MappingKernelManager, self).interrupt_kernel(kernel_id)
292 290 self.log.info("Kernel interrupted: %s" % kernel_id)
293 291
294 292 def restart_kernel(self, kernel_id):
295 293 """Restart a kernel while keeping clients connected."""
296 if kernel_id not in self:
297 raise web.HTTPError(404)
298
294 self._check_kernel_id(kernel_id)
299 295 # Get the notebook_id to preserve the kernel/notebook association.
300 296 notebook_id = self.notebook_for_kernel(kernel_id)
301 297 # Create the new kernel first so we can move the clients over.
@@ -309,17 +305,22 class MappingKernelManager(KernelManager):
309 305 return new_kernel_id
310 306
311 307 def create_iopub_stream(self, kernel_id):
312 if kernel_id not in self:
313 raise web.HTTPError(404)
308 """Create a new iopub stream."""
309 self._check_kernel_id(kernel_id)
314 310 return super(MappingKernelManager, self).create_iopub_stream(kernel_id)
315 311
316 312 def create_shell_stream(self, kernel_id):
317 if kernel_id not in self:
318 raise web.HTTPError(404)
313 """Create a new shell stream."""
314 self._check_kernel_id(kernel_id)
319 315 return super(MappingKernelManager, self).create_shell_stream(kernel_id)
320 316
321 317 def create_hb_stream(self, kernel_id):
322 if kernel_id not in self:
323 raise web.HTTPError(404)
318 """Create a new hb stream."""
319 self._check_kernel_id(kernel_id)
324 320 return super(MappingKernelManager, self).create_hb_stream(kernel_id)
325 321
322 def _check_kernel_id(self, kernel_id):
323 """Check a that a kernel_id exists and raise 404 if not."""
324 if kernel_id not in self:
325 raise web.HTTPError(404, u'Kernel does not exist: %s' % kernel_id)
326
@@ -93,7 +93,7 class NotebookManager(LoggingConfigurable):
93 93 try:
94 94 name = self.mapping[notebook_id]
95 95 except KeyError:
96 raise web.HTTPError(404)
96 raise web.HTTPError(404, u'Notebook does not exist: %s' % notebook_id)
97 97 return self.get_path_by_name(name)
98 98
99 99 def get_path_by_name(self, name):
@@ -106,7 +106,7 class NotebookManager(LoggingConfigurable):
106 106 """Get the representation of a notebook in format by notebook_id."""
107 107 format = unicode(format)
108 108 if format not in self.allowed_formats:
109 raise web.HTTPError(415)
109 raise web.HTTPError(415, u'Invalid notebook format: %s' % format)
110 110 last_modified, nb = self.get_notebook_object(notebook_id)
111 111 data = current.writes(nb, format)
112 112 name = nb.get('name','notebook')
@@ -116,7 +116,7 class NotebookManager(LoggingConfigurable):
116 116 """Get the NotebookNode representation of a notebook by notebook_id."""
117 117 path = self.find_path(notebook_id)
118 118 if not os.path.isfile(path):
119 raise web.HTTPError(404)
119 raise web.HTTPError(404, u'Notebook does not exist: %s' % notebook_id)
120 120 info = os.stat(path)
121 121 last_modified = datetime.datetime.utcfromtimestamp(info.st_mtime)
122 122 with open(path,'r') as f:
@@ -125,7 +125,7 class NotebookManager(LoggingConfigurable):
125 125 # v1 and v2 and json in the .ipynb files.
126 126 nb = current.reads(s, u'json')
127 127 except:
128 raise web.HTTPError(404)
128 raise web.HTTPError(500, u'Unreadable JSON notebook.')
129 129 if 'name' not in nb:
130 130 nb.name = os.path.split(path)[-1].split(u'.')[0]
131 131 return last_modified, nb
@@ -137,18 +137,18 class NotebookManager(LoggingConfigurable):
137 137 and the value in the data is updated to use that value.
138 138 """
139 139 if format not in self.allowed_formats:
140 raise web.HTTPError(415)
140 raise web.HTTPError(415, u'Invalid notebook format: %s' % format)
141 141
142 142 try:
143 143 nb = current.reads(data, format)
144 144 except:
145 raise web.HTTPError(400)
145 raise web.HTTPError(400, u'Invalid JSON data')
146 146
147 147 if name is None:
148 148 try:
149 149 name = nb.metadata.name
150 150 except AttributeError:
151 raise web.HTTPError(400)
151 raise web.HTTPError(400, u'Missing notebook name')
152 152 nb.metadata.name = name
153 153
154 154 notebook_id = self.new_notebook_id(name)
@@ -158,12 +158,12 class NotebookManager(LoggingConfigurable):
158 158 def save_notebook(self, notebook_id, data, name=None, format=u'json'):
159 159 """Save an existing notebook by notebook_id."""
160 160 if format not in self.allowed_formats:
161 raise web.HTTPError(415)
161 raise web.HTTPError(415, u'Invalid notebook format: %s' % format)
162 162
163 163 try:
164 164 nb = current.reads(data, format)
165 165 except:
166 raise web.HTTPError(400)
166 raise web.HTTPError(400, u'Invalid JSON data')
167 167
168 168 if name is not None:
169 169 nb.metadata.name = name
@@ -172,18 +172,18 class NotebookManager(LoggingConfigurable):
172 172 def save_notebook_object(self, notebook_id, nb):
173 173 """Save an existing notebook object by notebook_id."""
174 174 if notebook_id not in self.mapping:
175 raise web.HTTPError(404)
175 raise web.HTTPError(404, u'Notebook does not exist: %s' % notebook_id)
176 176 old_name = self.mapping[notebook_id]
177 177 try:
178 178 new_name = nb.metadata.name
179 179 except AttributeError:
180 raise web.HTTPError(400)
180 raise web.HTTPError(400, u'Missing notebook name')
181 181 path = self.get_path_by_name(new_name)
182 182 try:
183 183 with open(path,'w') as f:
184 184 current.write(nb, f, u'json')
185 185 except:
186 raise web.HTTPError(400)
186 raise web.HTTPError(400, u'Unexpected error while saving notebook')
187 187 if old_name != new_name:
188 188 old_path = self.get_path_by_name(old_name)
189 189 if os.path.isfile(old_path):
@@ -195,7 +195,7 class NotebookManager(LoggingConfigurable):
195 195 """Delete notebook by notebook_id."""
196 196 path = self.find_path(notebook_id)
197 197 if not os.path.isfile(path):
198 raise web.HTTPError(404)
198 raise web.HTTPError(404, u'Notebook does not exist: %s' % notebook_id)
199 199 os.unlink(path)
200 200 self.delete_notebook_id(notebook_id)
201 201
General Comments 0
You need to be logged in to leave comments. Login now