mirror of
https://github.com/jupyter/notebook.git
synced 2024-12-27 04:20:22 +08:00
96183a60a0
instead of GET terminals/new to be consistent with creating new notebooks. We had to stop using GET notebooks/new because browsers would create new notebooks when making preview thumbnails for commonly visited pages, etc. I assume the same issue would apply to terminals
44 lines
1.3 KiB
Python
44 lines
1.3 KiB
Python
import json
|
|
from tornado import web
|
|
from ..base.handlers import IPythonHandler, json_errors
|
|
from ..utils import url_path_join
|
|
|
|
class TerminalRootHandler(IPythonHandler):
|
|
@web.authenticated
|
|
@json_errors
|
|
def get(self):
|
|
tm = self.terminal_manager
|
|
terms = [{'name': name} for name in tm.terminals]
|
|
self.finish(json.dumps(terms))
|
|
|
|
@web.authenticated
|
|
@json_errors
|
|
def post(self):
|
|
"""POST /terminals creates a new terminal and redirects to it"""
|
|
name, _ = self.terminal_manager.new_named_terminal()
|
|
self.finish(json.dumps({'name': name}))
|
|
|
|
|
|
class TerminalHandler(IPythonHandler):
|
|
SUPPORTED_METHODS = ('GET', 'DELETE')
|
|
|
|
@web.authenticated
|
|
@json_errors
|
|
def get(self, name):
|
|
tm = self.terminal_manager
|
|
if name in tm.terminals:
|
|
self.finish(json.dumps({'name': name}))
|
|
else:
|
|
raise web.HTTPError(404, "Terminal not found: %r" % name)
|
|
|
|
@web.authenticated
|
|
@json_errors
|
|
def delete(self, name):
|
|
tm = self.terminal_manager
|
|
if name in tm.terminals:
|
|
tm.kill(name)
|
|
# XXX: Should this wait for terminal to finish before returning?
|
|
self.set_status(204)
|
|
self.finish()
|
|
else:
|
|
raise web.HTTPError(404, "Terminal not found: %r" % name) |