Show More
@@ -1,44 +1,44 | |||
|
1 | 1 | import json |
|
2 | from tornado import web | |
|
2 | from tornado import web, gen | |
|
3 | 3 | from ..base.handlers import IPythonHandler, json_errors |
|
4 | 4 | from ..utils import url_path_join |
|
5 | 5 | |
|
6 | 6 | class TerminalRootHandler(IPythonHandler): |
|
7 | 7 | @web.authenticated |
|
8 | 8 | @json_errors |
|
9 | 9 | def get(self): |
|
10 | 10 | tm = self.terminal_manager |
|
11 | 11 | terms = [{'name': name} for name in tm.terminals] |
|
12 | 12 | self.finish(json.dumps(terms)) |
|
13 | 13 | |
|
14 | 14 | @web.authenticated |
|
15 | 15 | @json_errors |
|
16 | 16 | def post(self): |
|
17 | 17 | """POST /terminals creates a new terminal and redirects to it""" |
|
18 | 18 | name, _ = self.terminal_manager.new_named_terminal() |
|
19 | 19 | self.finish(json.dumps({'name': name})) |
|
20 | 20 | |
|
21 | 21 | |
|
22 | 22 | class TerminalHandler(IPythonHandler): |
|
23 | 23 | SUPPORTED_METHODS = ('GET', 'DELETE') |
|
24 | 24 | |
|
25 | 25 | @web.authenticated |
|
26 | 26 | @json_errors |
|
27 | 27 | def get(self, name): |
|
28 | 28 | tm = self.terminal_manager |
|
29 | 29 | if name in tm.terminals: |
|
30 | 30 | self.finish(json.dumps({'name': name})) |
|
31 | 31 | else: |
|
32 | 32 | raise web.HTTPError(404, "Terminal not found: %r" % name) |
|
33 | 33 | |
|
34 | 34 | @web.authenticated |
|
35 | 35 | @json_errors |
|
36 | @gen.coroutine | |
|
36 | 37 | def delete(self, name): |
|
37 | 38 | tm = self.terminal_manager |
|
38 | 39 | if name in tm.terminals: |
|
39 |
tm. |
|
|
40 | # XXX: Should this wait for terminal to finish before returning? | |
|
40 | yield tm.terminate(name, force=True) | |
|
41 | 41 | self.set_status(204) |
|
42 | 42 | self.finish() |
|
43 | 43 | else: |
|
44 | raise web.HTTPError(404, "Terminal not found: %r" % name) No newline at end of file | |
|
44 | raise web.HTTPError(404, "Terminal not found: %r" % name) |
General Comments 0
You need to be logged in to leave comments.
Login now