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