Mercurial > libervia-backend
annotate sat_frontends/jp/output_std.py @ 2646:712cb4ff3e13
core: new EncryptionHandler class which manage encrypted session as a core feature:
Plugin handling encryption can now register using host.registerEncryptionPlugin, and an encryption session can now be started using messageEncryptionStart bridge method.
This will make encryption handling more easy, as we now know if a session is clear or e2e encrypted, and which plugin handle it.
author | Goffi <goffi@goffi.org> |
---|---|
date | Sun, 29 Jul 2018 19:22:56 +0200 |
parents | 56f94936df1e |
children | b156b78b8f9a |
rev | line source |
---|---|
1950 | 1 #! /usr/bin/python |
2 # -*- coding: utf-8 -*- | |
3 | |
4 # jp: a SàT command line tool | |
2483 | 5 # Copyright (C) 2009-2018 Jérôme Poisson (goffi@goffi.org) |
1950 | 6 |
7 # This program is free software: you can redistribute it and/or modify | |
8 # it under the terms of the GNU Affero General Public License as published by | |
9 # the Free Software Foundation, either version 3 of the License, or | |
10 # (at your option) any later version. | |
11 | |
12 # This program is distributed in the hope that it will be useful, | |
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 # GNU Affero General Public License for more details. | |
16 | |
17 # You should have received a copy of the GNU Affero General Public License | |
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
19 """Standard outputs""" | |
20 | |
21 | |
22 from sat_frontends.jp.constants import Const as C | |
2194
322948499db0
jp (output dict): added color and no-header option
Goffi <goffi@goffi.org>
parents:
2186
diff
changeset
|
23 from sat.tools.common.ansi import ANSI as A |
1950 | 24 import json |
25 | |
2156
8f96c242fa89
jp (outputs): added OUTPUT_COMPLEX type for data which are more complex than key/value dictionaries
Goffi <goffi@goffi.org>
parents:
1950
diff
changeset
|
26 __outputs__ = ["Simple", "Json"] |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
27 SIMPLE = u"simple" |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
28 JSON = u"json" |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
29 JSON_RAW = u"json_raw" |
1950 | 30 |
31 | |
2156
8f96c242fa89
jp (outputs): added OUTPUT_COMPLEX type for data which are more complex than key/value dictionaries
Goffi <goffi@goffi.org>
parents:
1950
diff
changeset
|
32 class Simple(object): |
1950 | 33 """Default outputs""" |
34 | |
2161
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
35 def __init__(self, host): |
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
36 self.host = host |
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
37 host.register_output(C.OUTPUT_TEXT, SIMPLE, self.simple_print) |
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
38 host.register_output(C.OUTPUT_LIST, SIMPLE, self.list) |
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
39 host.register_output(C.OUTPUT_DICT, SIMPLE, self.dict) |
2233
bf998d8626d9
jp (output): added LIST_DICT output, to handle list of dictionaries
Goffi <goffi@goffi.org>
parents:
2194
diff
changeset
|
40 host.register_output(C.OUTPUT_LIST_DICT, SIMPLE, self.list_dict) |
2296
1a64fd7b648d
jp (standard output): added simple, json and json_raw for OUTPUT_DICT_DICT
Goffi <goffi@goffi.org>
parents:
2233
diff
changeset
|
41 host.register_output(C.OUTPUT_DICT_DICT, SIMPLE, self.dict_dict) |
2161
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
42 host.register_output(C.OUTPUT_COMPLEX, SIMPLE, self.simple_print) |
1950 | 43 |
2156
8f96c242fa89
jp (outputs): added OUTPUT_COMPLEX type for data which are more complex than key/value dictionaries
Goffi <goffi@goffi.org>
parents:
1950
diff
changeset
|
44 def simple_print(self, data): |
2186
9061c7247964
jp (std output): force unicode on simple output
Goffi <goffi@goffi.org>
parents:
2161
diff
changeset
|
45 self.host.disp(unicode(data)) |
1950 | 46 |
47 def list(self, data): | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
48 self.host.disp(u"\n".join(data)) |
1950 | 49 |
2296
1a64fd7b648d
jp (standard output): added simple, json and json_raw for OUTPUT_DICT_DICT
Goffi <goffi@goffi.org>
parents:
2233
diff
changeset
|
50 def dict(self, data, indent=0, header_color=C.A_HEADER): |
2194
322948499db0
jp (output dict): added color and no-header option
Goffi <goffi@goffi.org>
parents:
2186
diff
changeset
|
51 options = self.host.parse_output_options() |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
52 self.host.check_output_options({u"no-header"}, options) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
53 show_header = not u"no-header" in options |
2194
322948499db0
jp (output dict): added color and no-header option
Goffi <goffi@goffi.org>
parents:
2186
diff
changeset
|
54 for k, v in data.iteritems(): |
322948499db0
jp (output dict): added color and no-header option
Goffi <goffi@goffi.org>
parents:
2186
diff
changeset
|
55 if show_header: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
56 header = A.color(header_color, k) + u": " |
2194
322948499db0
jp (output dict): added color and no-header option
Goffi <goffi@goffi.org>
parents:
2186
diff
changeset
|
57 else: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
58 header = u"" |
2194
322948499db0
jp (output dict): added color and no-header option
Goffi <goffi@goffi.org>
parents:
2186
diff
changeset
|
59 |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
60 self.host.disp( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
61 ( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
62 u"{indent}{header}{value}".format( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
63 indent=indent * u" ", header=header, value=v |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
64 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
65 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
66 ) |
2156
8f96c242fa89
jp (outputs): added OUTPUT_COMPLEX type for data which are more complex than key/value dictionaries
Goffi <goffi@goffi.org>
parents:
1950
diff
changeset
|
67 |
2233
bf998d8626d9
jp (output): added LIST_DICT output, to handle list of dictionaries
Goffi <goffi@goffi.org>
parents:
2194
diff
changeset
|
68 def list_dict(self, data): |
bf998d8626d9
jp (output): added LIST_DICT output, to handle list of dictionaries
Goffi <goffi@goffi.org>
parents:
2194
diff
changeset
|
69 for idx, datum in enumerate(data): |
bf998d8626d9
jp (output): added LIST_DICT output, to handle list of dictionaries
Goffi <goffi@goffi.org>
parents:
2194
diff
changeset
|
70 if idx: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
71 self.host.disp(u"\n") |
2233
bf998d8626d9
jp (output): added LIST_DICT output, to handle list of dictionaries
Goffi <goffi@goffi.org>
parents:
2194
diff
changeset
|
72 self.dict(datum) |
bf998d8626d9
jp (output): added LIST_DICT output, to handle list of dictionaries
Goffi <goffi@goffi.org>
parents:
2194
diff
changeset
|
73 |
2296
1a64fd7b648d
jp (standard output): added simple, json and json_raw for OUTPUT_DICT_DICT
Goffi <goffi@goffi.org>
parents:
2233
diff
changeset
|
74 def dict_dict(self, data): |
1a64fd7b648d
jp (standard output): added simple, json and json_raw for OUTPUT_DICT_DICT
Goffi <goffi@goffi.org>
parents:
2233
diff
changeset
|
75 for key, sub_dict in data.iteritems(): |
1a64fd7b648d
jp (standard output): added simple, json and json_raw for OUTPUT_DICT_DICT
Goffi <goffi@goffi.org>
parents:
2233
diff
changeset
|
76 self.host.disp(A.color(C.A_HEADER, key)) |
1a64fd7b648d
jp (standard output): added simple, json and json_raw for OUTPUT_DICT_DICT
Goffi <goffi@goffi.org>
parents:
2233
diff
changeset
|
77 self.dict(sub_dict, indent=4, header_color=C.A_SUBHEADER) |
1a64fd7b648d
jp (standard output): added simple, json and json_raw for OUTPUT_DICT_DICT
Goffi <goffi@goffi.org>
parents:
2233
diff
changeset
|
78 |
1950 | 79 |
80 class Json(object): | |
81 """outputs in json format""" | |
82 | |
2161
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
83 def __init__(self, host): |
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
84 self.host = host |
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
85 host.register_output(C.OUTPUT_TEXT, JSON, self.dump) |
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
86 host.register_output(C.OUTPUT_LIST, JSON, self.dump_pretty) |
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
87 host.register_output(C.OUTPUT_LIST, JSON_RAW, self.dump) |
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
88 host.register_output(C.OUTPUT_DICT, JSON, self.dump_pretty) |
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
89 host.register_output(C.OUTPUT_DICT, JSON_RAW, self.dump) |
2233
bf998d8626d9
jp (output): added LIST_DICT output, to handle list of dictionaries
Goffi <goffi@goffi.org>
parents:
2194
diff
changeset
|
90 host.register_output(C.OUTPUT_LIST_DICT, JSON, self.dump_pretty) |
bf998d8626d9
jp (output): added LIST_DICT output, to handle list of dictionaries
Goffi <goffi@goffi.org>
parents:
2194
diff
changeset
|
91 host.register_output(C.OUTPUT_LIST_DICT, JSON_RAW, self.dump) |
2296
1a64fd7b648d
jp (standard output): added simple, json and json_raw for OUTPUT_DICT_DICT
Goffi <goffi@goffi.org>
parents:
2233
diff
changeset
|
92 host.register_output(C.OUTPUT_DICT_DICT, JSON, self.dump_pretty) |
1a64fd7b648d
jp (standard output): added simple, json and json_raw for OUTPUT_DICT_DICT
Goffi <goffi@goffi.org>
parents:
2233
diff
changeset
|
93 host.register_output(C.OUTPUT_DICT_DICT, JSON_RAW, self.dump) |
2161
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
94 host.register_output(C.OUTPUT_COMPLEX, JSON, self.dump_pretty) |
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
95 host.register_output(C.OUTPUT_COMPLEX, JSON_RAW, self.dump) |
1950 | 96 |
97 def dump(self, data): | |
2161
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
98 self.host.disp(json.dumps(data, default=str)) |
1950 | 99 |
100 def dump_pretty(self, data): | |
2161
62dfa6e02f54
jp (base, blog, output(std)): fixed bad unicode handling in stdout, use of jp.disp instead of simple print
Goffi <goffi@goffi.org>
parents:
2156
diff
changeset
|
101 self.host.disp(json.dumps(data, indent=4, default=str)) |