Mercurial > libervia-backend
annotate sat_frontends/jp/cmd_pubsub.py @ 3944:748094d5a74d
plugin XEP-0374, XEP-0384: handle cases where "to" is not set in <message> for `feedback_jid`
author | Goffi <goffi@goffi.org> |
---|---|
date | Sat, 15 Oct 2022 20:38:33 +0200 |
parents | 8ae3e870be94 |
children | 08c1d5485411 |
rev | line source |
---|---|
3137 | 1 #!/usr/bin/env python3 |
2 | |
2191
a1a8233f89e8
jp(pubsub/get): pubsub/get command, first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
3 |
a1a8233f89e8
jp(pubsub/get): pubsub/get command, first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
4 # jp: a SàT command line tool |
3479 | 5 # Copyright (C) 2009-2021 Jérôme Poisson (goffi@goffi.org) |
2191
a1a8233f89e8
jp(pubsub/get): pubsub/get command, first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
6 |
a1a8233f89e8
jp(pubsub/get): pubsub/get command, first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
7 # This program is free software: you can redistribute it and/or modify |
a1a8233f89e8
jp(pubsub/get): pubsub/get command, first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
8 # it under the terms of the GNU Affero General Public License as published by |
a1a8233f89e8
jp(pubsub/get): pubsub/get command, first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
9 # the Free Software Foundation, either version 3 of the License, or |
a1a8233f89e8
jp(pubsub/get): pubsub/get command, first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
10 # (at your option) any later version. |
a1a8233f89e8
jp(pubsub/get): pubsub/get command, first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
11 |
a1a8233f89e8
jp(pubsub/get): pubsub/get command, first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
12 # This program is distributed in the hope that it will be useful, |
a1a8233f89e8
jp(pubsub/get): pubsub/get command, first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
a1a8233f89e8
jp(pubsub/get): pubsub/get command, first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
a1a8233f89e8
jp(pubsub/get): pubsub/get command, first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
15 # GNU Affero General Public License for more details. |
a1a8233f89e8
jp(pubsub/get): pubsub/get command, first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
16 |
a1a8233f89e8
jp(pubsub/get): pubsub/get command, first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
17 # You should have received a copy of the GNU Affero General Public License |
a1a8233f89e8
jp(pubsub/get): pubsub/get command, first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
a1a8233f89e8
jp(pubsub/get): pubsub/get command, first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
19 |
a1a8233f89e8
jp(pubsub/get): pubsub/get command, first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
20 |
3040 | 21 import argparse |
22 import os.path | |
23 import re | |
24 import sys | |
25 import subprocess | |
26 import asyncio | |
3668
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
27 import json |
3028 | 28 from . import base |
2191
a1a8233f89e8
jp(pubsub/get): pubsub/get command, first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
29 from sat.core.i18n import _ |
2316 | 30 from sat.core import exceptions |
2191
a1a8233f89e8
jp(pubsub/get): pubsub/get command, first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
31 from sat_frontends.jp.constants import Const as C |
2275
64e99bf0dfa2
jp (pubsub/edit): new edit subcommand, which work in a same way as for blog
Goffi <goffi@goffi.org>
parents:
2274
diff
changeset
|
32 from sat_frontends.jp import common |
2316 | 33 from sat_frontends.jp import arg_tools |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
34 from sat_frontends.jp import xml_tools |
2221
a6c9bc4d1de0
jp (pubsub/node): added create and delete commands
Goffi <goffi@goffi.org>
parents:
2214
diff
changeset
|
35 from functools import partial |
3100
cea52c9ddfd9
plugin XEP-0060, jp (pubsub/set): publish-options implementation:
Goffi <goffi@goffi.org>
parents:
3040
diff
changeset
|
36 from sat.tools.common import data_format |
2224
87fcd4a7c7e4
jp (pubsub): added uri command to build pubsub URI
Goffi <goffi@goffi.org>
parents:
2221
diff
changeset
|
37 from sat.tools.common import uri |
2316 | 38 from sat.tools.common.ansi import ANSI as A |
3668
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
39 from sat.tools.common import date_utils |
2316 | 40 from sat_frontends.tools import jid, strings |
3413
f4d417593e77
jp (pubsub/node/info, pubsub/get): better exit code:
Goffi <goffi@goffi.org>
parents:
3412
diff
changeset
|
41 from sat_frontends.bridge.bridge_frontend import BridgeException |
2191
a1a8233f89e8
jp(pubsub/get): pubsub/get command, first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
42 |
a1a8233f89e8
jp(pubsub/get): pubsub/get command, first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
43 __commands__ = ["Pubsub"] |
a1a8233f89e8
jp(pubsub/get): pubsub/get command, first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
44 |
3028 | 45 PUBSUB_TMP_DIR = "pubsub" |
2351
3c0a3fae1862
jp (pubsub/node): added schema (set/edit/get) commands to manipulate PubSub node schema
Goffi <goffi@goffi.org>
parents:
2339
diff
changeset
|
46 PUBSUB_SCHEMA_TMP_DIR = PUBSUB_TMP_DIR + "_schema" |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
47 ALLOWED_SUBSCRIPTIONS_OWNER = ("subscribed", "pending", "none") |
2275
64e99bf0dfa2
jp (pubsub/edit): new edit subcommand, which work in a same way as for blog
Goffi <goffi@goffi.org>
parents:
2274
diff
changeset
|
48 |
2308
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
49 # TODO: need to split this class in several modules, plugin should handle subcommands |
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
50 |
2191
a1a8233f89e8
jp(pubsub/get): pubsub/get command, first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
51 |
2235
4db836386641
jp: added use_pubsub and use_pubsub_node_req arguments to CommandBase
Goffi <goffi@goffi.org>
parents:
2224
diff
changeset
|
52 class NodeInfo(base.CommandBase): |
2197
e0e06391ce91
jp (pubsub): added pubsub/node/info command to retrieve node configuration
Goffi <goffi@goffi.org>
parents:
2195
diff
changeset
|
53 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
54 base.CommandBase.__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
55 self, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
56 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
57 "info", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
58 use_output=C.OUTPUT_DICT, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
59 use_pubsub=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
60 pubsub_flags={C.NODE}, |
3028 | 61 help=_("retrieve node configuration"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
62 ) |
2197
e0e06391ce91
jp (pubsub): added pubsub/node/info command to retrieve node configuration
Goffi <goffi@goffi.org>
parents:
2195
diff
changeset
|
63 |
e0e06391ce91
jp (pubsub): added pubsub/node/info command to retrieve node configuration
Goffi <goffi@goffi.org>
parents:
2195
diff
changeset
|
64 def add_parser_options(self): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
65 self.parser.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
66 "-k", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
67 "--key", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
68 action="append", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
69 dest="keys", |
3028 | 70 help=_("data key to filter"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
71 ) |
2197
e0e06391ce91
jp (pubsub): added pubsub/node/info command to retrieve node configuration
Goffi <goffi@goffi.org>
parents:
2195
diff
changeset
|
72 |
e0e06391ce91
jp (pubsub): added pubsub/node/info command to retrieve node configuration
Goffi <goffi@goffi.org>
parents:
2195
diff
changeset
|
73 def removePrefix(self, key): |
3028 | 74 return key[7:] if key.startswith("pubsub#") else key |
2197
e0e06391ce91
jp (pubsub): added pubsub/node/info command to retrieve node configuration
Goffi <goffi@goffi.org>
parents:
2195
diff
changeset
|
75 |
e0e06391ce91
jp (pubsub): added pubsub/node/info command to retrieve node configuration
Goffi <goffi@goffi.org>
parents:
2195
diff
changeset
|
76 def filterKey(self, key): |
3028 | 77 return any((key == k or key == "pubsub#" + k) for k in self.args.keys) |
2197
e0e06391ce91
jp (pubsub): added pubsub/node/info command to retrieve node configuration
Goffi <goffi@goffi.org>
parents:
2195
diff
changeset
|
78 |
3040 | 79 async def start(self): |
80 try: | |
81 config_dict = await self.host.bridge.psNodeConfigurationGet( | |
82 self.args.service, | |
83 self.args.node, | |
84 self.profile, | |
85 ) | |
3413
f4d417593e77
jp (pubsub/node/info, pubsub/get): better exit code:
Goffi <goffi@goffi.org>
parents:
3412
diff
changeset
|
86 except BridgeException as e: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
87 if e.condition == "item-not-found": |
3413
f4d417593e77
jp (pubsub/node/info, pubsub/get): better exit code:
Goffi <goffi@goffi.org>
parents:
3412
diff
changeset
|
88 self.disp( |
f4d417593e77
jp (pubsub/node/info, pubsub/get): better exit code:
Goffi <goffi@goffi.org>
parents:
3412
diff
changeset
|
89 f"The node {self.args.node} doesn't exist on {self.args.service}", |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
90 error=True, |
3413
f4d417593e77
jp (pubsub/node/info, pubsub/get): better exit code:
Goffi <goffi@goffi.org>
parents:
3412
diff
changeset
|
91 ) |
f4d417593e77
jp (pubsub/node/info, pubsub/get): better exit code:
Goffi <goffi@goffi.org>
parents:
3412
diff
changeset
|
92 self.host.quit(C.EXIT_NOT_FOUND) |
f4d417593e77
jp (pubsub/node/info, pubsub/get): better exit code:
Goffi <goffi@goffi.org>
parents:
3412
diff
changeset
|
93 else: |
f4d417593e77
jp (pubsub/node/info, pubsub/get): better exit code:
Goffi <goffi@goffi.org>
parents:
3412
diff
changeset
|
94 self.disp(f"can't get node configuration: {e}", error=True) |
f4d417593e77
jp (pubsub/node/info, pubsub/get): better exit code:
Goffi <goffi@goffi.org>
parents:
3412
diff
changeset
|
95 self.host.quit(C.EXIT_BRIDGE_ERRBACK) |
3040 | 96 except Exception as e: |
3413
f4d417593e77
jp (pubsub/node/info, pubsub/get): better exit code:
Goffi <goffi@goffi.org>
parents:
3412
diff
changeset
|
97 self.disp(f"Internal error: {e}", error=True) |
f4d417593e77
jp (pubsub/node/info, pubsub/get): better exit code:
Goffi <goffi@goffi.org>
parents:
3412
diff
changeset
|
98 self.host.quit(C.EXIT_INTERNAL_ERROR) |
3040 | 99 else: |
100 key_filter = (lambda k: True) if not self.args.keys else self.filterKey | |
101 config_dict = { | |
102 self.removePrefix(k): v for k, v in config_dict.items() if key_filter(k) | |
103 } | |
104 await self.output(config_dict) | |
105 self.host.quit() | |
2197
e0e06391ce91
jp (pubsub): added pubsub/node/info command to retrieve node configuration
Goffi <goffi@goffi.org>
parents:
2195
diff
changeset
|
106 |
2221
a6c9bc4d1de0
jp (pubsub/node): added create and delete commands
Goffi <goffi@goffi.org>
parents:
2214
diff
changeset
|
107 |
2235
4db836386641
jp: added use_pubsub and use_pubsub_node_req arguments to CommandBase
Goffi <goffi@goffi.org>
parents:
2224
diff
changeset
|
108 class NodeCreate(base.CommandBase): |
2221
a6c9bc4d1de0
jp (pubsub/node): added create and delete commands
Goffi <goffi@goffi.org>
parents:
2214
diff
changeset
|
109 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
110 base.CommandBase.__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
111 self, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
112 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
113 "create", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
114 use_output=C.OUTPUT_DICT, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
115 use_pubsub=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
116 pubsub_flags={C.NODE}, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
117 use_verbose=True, |
3028 | 118 help=_("create a node"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
119 ) |
2221
a6c9bc4d1de0
jp (pubsub/node): added create and delete commands
Goffi <goffi@goffi.org>
parents:
2214
diff
changeset
|
120 |
3100
cea52c9ddfd9
plugin XEP-0060, jp (pubsub/set): publish-options implementation:
Goffi <goffi@goffi.org>
parents:
3040
diff
changeset
|
121 @staticmethod |
cea52c9ddfd9
plugin XEP-0060, jp (pubsub/set): publish-options implementation:
Goffi <goffi@goffi.org>
parents:
3040
diff
changeset
|
122 def add_node_config_options(parser): |
cea52c9ddfd9
plugin XEP-0060, jp (pubsub/set): publish-options implementation:
Goffi <goffi@goffi.org>
parents:
3040
diff
changeset
|
123 parser.add_argument( |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
124 "-f", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
125 "--field", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
126 action="append", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
127 nargs=2, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
128 dest="fields", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
129 default=[], |
3028 | 130 metavar=("KEY", "VALUE"), |
131 help=_("configuration field to set"), | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
132 ) |
3100
cea52c9ddfd9
plugin XEP-0060, jp (pubsub/set): publish-options implementation:
Goffi <goffi@goffi.org>
parents:
3040
diff
changeset
|
133 parser.add_argument( |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
134 "-F", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
135 "--full-prefix", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
136 action="store_true", |
3028 | 137 help=_('don\'t prepend "pubsub#" prefix to field names'), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
138 ) |
2221
a6c9bc4d1de0
jp (pubsub/node): added create and delete commands
Goffi <goffi@goffi.org>
parents:
2214
diff
changeset
|
139 |
3100
cea52c9ddfd9
plugin XEP-0060, jp (pubsub/set): publish-options implementation:
Goffi <goffi@goffi.org>
parents:
3040
diff
changeset
|
140 def add_parser_options(self): |
cea52c9ddfd9
plugin XEP-0060, jp (pubsub/set): publish-options implementation:
Goffi <goffi@goffi.org>
parents:
3040
diff
changeset
|
141 self.add_node_config_options(self.parser) |
cea52c9ddfd9
plugin XEP-0060, jp (pubsub/set): publish-options implementation:
Goffi <goffi@goffi.org>
parents:
3040
diff
changeset
|
142 |
cea52c9ddfd9
plugin XEP-0060, jp (pubsub/set): publish-options implementation:
Goffi <goffi@goffi.org>
parents:
3040
diff
changeset
|
143 @staticmethod |
cea52c9ddfd9
plugin XEP-0060, jp (pubsub/set): publish-options implementation:
Goffi <goffi@goffi.org>
parents:
3040
diff
changeset
|
144 def get_config_options(args): |
cea52c9ddfd9
plugin XEP-0060, jp (pubsub/set): publish-options implementation:
Goffi <goffi@goffi.org>
parents:
3040
diff
changeset
|
145 if not args.full_prefix: |
cea52c9ddfd9
plugin XEP-0060, jp (pubsub/set): publish-options implementation:
Goffi <goffi@goffi.org>
parents:
3040
diff
changeset
|
146 return {"pubsub#" + k: v for k, v in args.fields} |
cea52c9ddfd9
plugin XEP-0060, jp (pubsub/set): publish-options implementation:
Goffi <goffi@goffi.org>
parents:
3040
diff
changeset
|
147 else: |
cea52c9ddfd9
plugin XEP-0060, jp (pubsub/set): publish-options implementation:
Goffi <goffi@goffi.org>
parents:
3040
diff
changeset
|
148 return dict(args.fields) |
cea52c9ddfd9
plugin XEP-0060, jp (pubsub/set): publish-options implementation:
Goffi <goffi@goffi.org>
parents:
3040
diff
changeset
|
149 |
3040 | 150 async def start(self): |
3100
cea52c9ddfd9
plugin XEP-0060, jp (pubsub/set): publish-options implementation:
Goffi <goffi@goffi.org>
parents:
3040
diff
changeset
|
151 options = self.get_config_options(self.args) |
3040 | 152 try: |
153 node_id = await self.host.bridge.psNodeCreate( | |
154 self.args.service, | |
155 self.args.node, | |
156 options, | |
157 self.profile, | |
158 ) | |
159 except Exception as e: | |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
160 self.disp(msg=_("can't create node: {e}").format(e=e), error=True) |
3040 | 161 self.host.quit(C.EXIT_BRIDGE_ERRBACK) |
162 else: | |
163 if self.host.verbosity: | |
164 announce = _("node created successfully: ") | |
165 else: | |
166 announce = "" | |
167 self.disp(announce + node_id) | |
168 self.host.quit() | |
2221
a6c9bc4d1de0
jp (pubsub/node): added create and delete commands
Goffi <goffi@goffi.org>
parents:
2214
diff
changeset
|
169 |
a6c9bc4d1de0
jp (pubsub/node): added create and delete commands
Goffi <goffi@goffi.org>
parents:
2214
diff
changeset
|
170 |
2802
f61a50790fae
jp (pubsub/node): added purge command
Goffi <goffi@goffi.org>
parents:
2777
diff
changeset
|
171 class NodePurge(base.CommandBase): |
f61a50790fae
jp (pubsub/node): added purge command
Goffi <goffi@goffi.org>
parents:
2777
diff
changeset
|
172 def __init__(self, host): |
f61a50790fae
jp (pubsub/node): added purge command
Goffi <goffi@goffi.org>
parents:
2777
diff
changeset
|
173 super(NodePurge, self).__init__( |
f61a50790fae
jp (pubsub/node): added purge command
Goffi <goffi@goffi.org>
parents:
2777
diff
changeset
|
174 host, |
f61a50790fae
jp (pubsub/node): added purge command
Goffi <goffi@goffi.org>
parents:
2777
diff
changeset
|
175 "purge", |
f61a50790fae
jp (pubsub/node): added purge command
Goffi <goffi@goffi.org>
parents:
2777
diff
changeset
|
176 use_pubsub=True, |
f61a50790fae
jp (pubsub/node): added purge command
Goffi <goffi@goffi.org>
parents:
2777
diff
changeset
|
177 pubsub_flags={C.NODE}, |
3028 | 178 help=_("purge a node (i.e. remove all items from it)"), |
2802
f61a50790fae
jp (pubsub/node): added purge command
Goffi <goffi@goffi.org>
parents:
2777
diff
changeset
|
179 ) |
f61a50790fae
jp (pubsub/node): added purge command
Goffi <goffi@goffi.org>
parents:
2777
diff
changeset
|
180 |
f61a50790fae
jp (pubsub/node): added purge command
Goffi <goffi@goffi.org>
parents:
2777
diff
changeset
|
181 def add_parser_options(self): |
f61a50790fae
jp (pubsub/node): added purge command
Goffi <goffi@goffi.org>
parents:
2777
diff
changeset
|
182 self.parser.add_argument( |
f61a50790fae
jp (pubsub/node): added purge command
Goffi <goffi@goffi.org>
parents:
2777
diff
changeset
|
183 "-f", |
f61a50790fae
jp (pubsub/node): added purge command
Goffi <goffi@goffi.org>
parents:
2777
diff
changeset
|
184 "--force", |
f61a50790fae
jp (pubsub/node): added purge command
Goffi <goffi@goffi.org>
parents:
2777
diff
changeset
|
185 action="store_true", |
3028 | 186 help=_("purge node without confirmation"), |
2802
f61a50790fae
jp (pubsub/node): added purge command
Goffi <goffi@goffi.org>
parents:
2777
diff
changeset
|
187 ) |
f61a50790fae
jp (pubsub/node): added purge command
Goffi <goffi@goffi.org>
parents:
2777
diff
changeset
|
188 |
3040 | 189 async def start(self): |
2802
f61a50790fae
jp (pubsub/node): added purge command
Goffi <goffi@goffi.org>
parents:
2777
diff
changeset
|
190 if not self.args.force: |
f61a50790fae
jp (pubsub/node): added purge command
Goffi <goffi@goffi.org>
parents:
2777
diff
changeset
|
191 if not self.args.service: |
3040 | 192 message = _( |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
193 "Are you sure to purge PEP node [{node}]? This will " |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
194 "delete ALL items from it!" |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
195 ).format(node=self.args.node) |
2802
f61a50790fae
jp (pubsub/node): added purge command
Goffi <goffi@goffi.org>
parents:
2777
diff
changeset
|
196 else: |
f61a50790fae
jp (pubsub/node): added purge command
Goffi <goffi@goffi.org>
parents:
2777
diff
changeset
|
197 message = _( |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
198 "Are you sure to delete node [{node}] on service " |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
199 "[{service}]? This will delete ALL items from it!" |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
200 ).format(node=self.args.node, service=self.args.service) |
3040 | 201 await self.host.confirmOrQuit(message, _("node purge cancelled")) |
2802
f61a50790fae
jp (pubsub/node): added purge command
Goffi <goffi@goffi.org>
parents:
2777
diff
changeset
|
202 |
3040 | 203 try: |
204 await self.host.bridge.psNodePurge( | |
205 self.args.service, | |
206 self.args.node, | |
207 self.profile, | |
208 ) | |
209 except Exception as e: | |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
210 self.disp(msg=_("can't purge node: {e}").format(e=e), error=True) |
3040 | 211 self.host.quit(C.EXIT_BRIDGE_ERRBACK) |
212 else: | |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
213 self.disp(_("node [{node}] purged successfully").format(node=self.args.node)) |
3040 | 214 self.host.quit() |
2802
f61a50790fae
jp (pubsub/node): added purge command
Goffi <goffi@goffi.org>
parents:
2777
diff
changeset
|
215 |
f61a50790fae
jp (pubsub/node): added purge command
Goffi <goffi@goffi.org>
parents:
2777
diff
changeset
|
216 |
2235
4db836386641
jp: added use_pubsub and use_pubsub_node_req arguments to CommandBase
Goffi <goffi@goffi.org>
parents:
2224
diff
changeset
|
217 class NodeDelete(base.CommandBase): |
2221
a6c9bc4d1de0
jp (pubsub/node): added create and delete commands
Goffi <goffi@goffi.org>
parents:
2214
diff
changeset
|
218 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
219 base.CommandBase.__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
220 self, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
221 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
222 "delete", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
223 use_pubsub=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
224 pubsub_flags={C.NODE}, |
3028 | 225 help=_("delete a node"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
226 ) |
2221
a6c9bc4d1de0
jp (pubsub/node): added create and delete commands
Goffi <goffi@goffi.org>
parents:
2214
diff
changeset
|
227 |
a6c9bc4d1de0
jp (pubsub/node): added create and delete commands
Goffi <goffi@goffi.org>
parents:
2214
diff
changeset
|
228 def add_parser_options(self): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
229 self.parser.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
230 "-f", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
231 "--force", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
232 action="store_true", |
3028 | 233 help=_("delete node without confirmation"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
234 ) |
2221
a6c9bc4d1de0
jp (pubsub/node): added create and delete commands
Goffi <goffi@goffi.org>
parents:
2214
diff
changeset
|
235 |
3040 | 236 async def start(self): |
2221
a6c9bc4d1de0
jp (pubsub/node): added create and delete commands
Goffi <goffi@goffi.org>
parents:
2214
diff
changeset
|
237 if not self.args.force: |
a6c9bc4d1de0
jp (pubsub/node): added create and delete commands
Goffi <goffi@goffi.org>
parents:
2214
diff
changeset
|
238 if not self.args.service: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
239 message = _("Are you sure to delete PEP node [{node}] ?").format( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
240 node=self.args.node |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
241 ) |
2221
a6c9bc4d1de0
jp (pubsub/node): added create and delete commands
Goffi <goffi@goffi.org>
parents:
2214
diff
changeset
|
242 else: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
243 message = _( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
244 "Are you sure to delete node [{node}] on " "service [{service}]?" |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
245 ).format(node=self.args.node, service=self.args.service) |
3040 | 246 await self.host.confirmOrQuit(message, _("node deletion cancelled")) |
2221
a6c9bc4d1de0
jp (pubsub/node): added create and delete commands
Goffi <goffi@goffi.org>
parents:
2214
diff
changeset
|
247 |
3040 | 248 try: |
249 await self.host.bridge.psNodeDelete( | |
250 self.args.service, | |
251 self.args.node, | |
252 self.profile, | |
253 ) | |
254 except Exception as e: | |
255 self.disp(f"can't delete node: {e}", error=True) | |
256 self.host.quit(C.EXIT_BRIDGE_ERRBACK) | |
257 else: | |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
258 self.disp(_("node [{node}] deleted successfully").format(node=self.args.node)) |
3040 | 259 self.host.quit() |
2221
a6c9bc4d1de0
jp (pubsub/node): added create and delete commands
Goffi <goffi@goffi.org>
parents:
2214
diff
changeset
|
260 |
a6c9bc4d1de0
jp (pubsub/node): added create and delete commands
Goffi <goffi@goffi.org>
parents:
2214
diff
changeset
|
261 |
2235
4db836386641
jp: added use_pubsub and use_pubsub_node_req arguments to CommandBase
Goffi <goffi@goffi.org>
parents:
2224
diff
changeset
|
262 class NodeSet(base.CommandBase): |
2199
ea0d0a4e2ad8
jp (pubsub/node): added set command
Goffi <goffi@goffi.org>
parents:
2197
diff
changeset
|
263 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
264 base.CommandBase.__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
265 self, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
266 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
267 "set", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
268 use_output=C.OUTPUT_DICT, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
269 use_pubsub=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
270 pubsub_flags={C.NODE}, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
271 use_verbose=True, |
3028 | 272 help=_("set node configuration"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
273 ) |
2199
ea0d0a4e2ad8
jp (pubsub/node): added set command
Goffi <goffi@goffi.org>
parents:
2197
diff
changeset
|
274 |
ea0d0a4e2ad8
jp (pubsub/node): added set command
Goffi <goffi@goffi.org>
parents:
2197
diff
changeset
|
275 def add_parser_options(self): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
276 self.parser.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
277 "-f", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
278 "--field", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
279 action="append", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
280 nargs=2, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
281 dest="fields", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
282 required=True, |
3028 | 283 metavar=("KEY", "VALUE"), |
284 help=_("configuration field to set (required)"), | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
285 ) |
3040 | 286 self.parser.add_argument( |
287 "-F", | |
288 "--full-prefix", | |
289 action="store_true", | |
290 help=_('don\'t prepend "pubsub#" prefix to field names'), | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
291 ) |
2199
ea0d0a4e2ad8
jp (pubsub/node): added set command
Goffi <goffi@goffi.org>
parents:
2197
diff
changeset
|
292 |
ea0d0a4e2ad8
jp (pubsub/node): added set command
Goffi <goffi@goffi.org>
parents:
2197
diff
changeset
|
293 def getKeyName(self, k): |
3040 | 294 if self.args.full_prefix or k.startswith("pubsub#"): |
295 return k | |
296 else: | |
3028 | 297 return "pubsub#" + k |
2199
ea0d0a4e2ad8
jp (pubsub/node): added set command
Goffi <goffi@goffi.org>
parents:
2197
diff
changeset
|
298 |
3040 | 299 async def start(self): |
300 try: | |
301 await self.host.bridge.psNodeConfigurationSet( | |
302 self.args.service, | |
303 self.args.node, | |
304 {self.getKeyName(k): v for k, v in self.args.fields}, | |
305 self.profile, | |
306 ) | |
307 except Exception as e: | |
308 self.disp(f"can't set node configuration: {e}", error=True) | |
309 self.host.quit(C.EXIT_BRIDGE_ERRBACK) | |
310 else: | |
311 self.disp(_("node configuration successful"), 1) | |
312 self.host.quit() | |
2199
ea0d0a4e2ad8
jp (pubsub/node): added set command
Goffi <goffi@goffi.org>
parents:
2197
diff
changeset
|
313 |
2197
e0e06391ce91
jp (pubsub): added pubsub/node/info command to retrieve node configuration
Goffi <goffi@goffi.org>
parents:
2195
diff
changeset
|
314 |
2804
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
315 class NodeImport(base.CommandBase): |
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
316 def __init__(self, host): |
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
317 super(NodeImport, self).__init__( |
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
318 host, |
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
319 "import", |
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
320 use_pubsub=True, |
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
321 pubsub_flags={C.NODE}, |
3028 | 322 help=_("import raw XML to a node"), |
2804
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
323 ) |
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
324 |
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
325 def add_parser_options(self): |
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
326 self.parser.add_argument( |
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
327 "--admin", |
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
328 action="store_true", |
3028 | 329 help=_("do a pubsub admin request, needed to change publisher"), |
2804
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
330 ) |
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
331 self.parser.add_argument( |
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
332 "import_file", |
3028 | 333 type=argparse.FileType(), |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
334 help=_( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
335 "path to the XML file with data to import. The file must contain " |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
336 "whole XML of each item to import." |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
337 ), |
2804
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
338 ) |
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
339 |
3040 | 340 async def start(self): |
2804
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
341 try: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
342 element, etree = xml_tools.etreeParse( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
343 self, self.args.import_file, reraise=True |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
344 ) |
2804
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
345 except Exception as e: |
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
346 from lxml.etree import XMLSyntaxError |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
347 |
2804
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
348 if isinstance(e, XMLSyntaxError) and e.code == 5: |
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
349 # we have extra content, this probaby means that item are not wrapped |
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
350 # so we wrap them here and try again |
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
351 self.args.import_file.seek(0) |
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
352 xml_buf = "<import>" + self.args.import_file.read() + "</import>" |
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
353 element, etree = xml_tools.etreeParse(self, xml_buf) |
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
354 |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
355 # we reverse element as we expect to have most recently published element first |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
356 # TODO: make this more explicit and add an option |
2804
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
357 element[:] = reversed(element) |
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
358 |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
359 if not all([i.tag == "{http://jabber.org/protocol/pubsub}item" for i in element]): |
2804
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
360 self.disp( |
3028 | 361 _("You are not using list of pubsub items, we can't import this file"), |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
362 error=True, |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
363 ) |
2804
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
364 self.host.quit(C.EXIT_DATA_ERROR) |
3040 | 365 return |
2804
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
366 |
3040 | 367 items = [etree.tostring(i, encoding="unicode") for i in element] |
2804
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
368 if self.args.admin: |
3040 | 369 method = self.host.bridge.psAdminItemsSend |
370 else: | |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
371 self.disp( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
372 _( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
373 "Items are imported without using admin mode, publisher can't " |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
374 "be changed" |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
375 ) |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
376 ) |
3040 | 377 method = self.host.bridge.psItemsSend |
378 | |
379 try: | |
380 items_ids = await method( | |
2804
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
381 self.args.service, |
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
382 self.args.node, |
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
383 items, |
3028 | 384 "", |
2804
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
385 self.profile, |
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
386 ) |
3040 | 387 except Exception as e: |
388 self.disp(f"can't send items: {e}", error=True) | |
389 self.host.quit(C.EXIT_BRIDGE_ERRBACK) | |
2804
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
390 else: |
3040 | 391 if items_ids: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
392 self.disp( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
393 _("items published with id(s) {items_ids}").format( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
394 items_ids=", ".join(items_ids) |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
395 ) |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
396 ) |
3040 | 397 else: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
398 self.disp(_("items published")) |
3040 | 399 self.host.quit() |
2804
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
400 |
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
401 |
2235
4db836386641
jp: added use_pubsub and use_pubsub_node_req arguments to CommandBase
Goffi <goffi@goffi.org>
parents:
2224
diff
changeset
|
402 class NodeAffiliationsGet(base.CommandBase): |
2204
afc703419186
jp (pubsub): added affiliations and node/affiliations/get:
Goffi <goffi@goffi.org>
parents:
2199
diff
changeset
|
403 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
404 base.CommandBase.__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
405 self, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
406 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
407 "get", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
408 use_output=C.OUTPUT_DICT, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
409 use_pubsub=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
410 pubsub_flags={C.NODE}, |
3028 | 411 help=_("retrieve node affiliations (for node owner)"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
412 ) |
2204
afc703419186
jp (pubsub): added affiliations and node/affiliations/get:
Goffi <goffi@goffi.org>
parents:
2199
diff
changeset
|
413 |
afc703419186
jp (pubsub): added affiliations and node/affiliations/get:
Goffi <goffi@goffi.org>
parents:
2199
diff
changeset
|
414 def add_parser_options(self): |
2235
4db836386641
jp: added use_pubsub and use_pubsub_node_req arguments to CommandBase
Goffi <goffi@goffi.org>
parents:
2224
diff
changeset
|
415 pass |
2204
afc703419186
jp (pubsub): added affiliations and node/affiliations/get:
Goffi <goffi@goffi.org>
parents:
2199
diff
changeset
|
416 |
3040 | 417 async def start(self): |
418 try: | |
419 affiliations = await self.host.bridge.psNodeAffiliationsGet( | |
420 self.args.service, | |
421 self.args.node, | |
422 self.profile, | |
423 ) | |
424 except Exception as e: | |
425 self.disp(f"can't get node affiliations: {e}", error=True) | |
426 self.host.quit(C.EXIT_BRIDGE_ERRBACK) | |
427 else: | |
428 await self.output(affiliations) | |
429 self.host.quit() | |
2204
afc703419186
jp (pubsub): added affiliations and node/affiliations/get:
Goffi <goffi@goffi.org>
parents:
2199
diff
changeset
|
430 |
afc703419186
jp (pubsub): added affiliations and node/affiliations/get:
Goffi <goffi@goffi.org>
parents:
2199
diff
changeset
|
431 |
2235
4db836386641
jp: added use_pubsub and use_pubsub_node_req arguments to CommandBase
Goffi <goffi@goffi.org>
parents:
2224
diff
changeset
|
432 class NodeAffiliationsSet(base.CommandBase): |
2207
d662bdd682b2
jp (pubsub/node) added pubsub/node/affiliations/set command
Goffi <goffi@goffi.org>
parents:
2204
diff
changeset
|
433 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
434 base.CommandBase.__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
435 self, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
436 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
437 "set", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
438 use_pubsub=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
439 pubsub_flags={C.NODE}, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
440 use_verbose=True, |
3028 | 441 help=_("set affiliations (for node owner)"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
442 ) |
2207
d662bdd682b2
jp (pubsub/node) added pubsub/node/affiliations/set command
Goffi <goffi@goffi.org>
parents:
2204
diff
changeset
|
443 |
d662bdd682b2
jp (pubsub/node) added pubsub/node/affiliations/set command
Goffi <goffi@goffi.org>
parents:
2204
diff
changeset
|
444 def add_parser_options(self): |
d662bdd682b2
jp (pubsub/node) added pubsub/node/affiliations/set command
Goffi <goffi@goffi.org>
parents:
2204
diff
changeset
|
445 # XXX: we use optional argument syntax for a required one because list of list of 2 elements |
3325
7ebda4b54170
jp (file/share): added commands to manage affiliations and configuration + documentation
Goffi <goffi@goffi.org>
parents:
3312
diff
changeset
|
446 # (used to construct dicts) don't work with positional arguments |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
447 self.parser.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
448 "-a", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
449 "--affiliation", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
450 dest="affiliations", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
451 metavar=("JID", "AFFILIATION"), |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
452 required=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
453 action="append", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
454 nargs=2, |
3028 | 455 help=_("entity/affiliation couple(s)"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
456 ) |
2207
d662bdd682b2
jp (pubsub/node) added pubsub/node/affiliations/set command
Goffi <goffi@goffi.org>
parents:
2204
diff
changeset
|
457 |
3040 | 458 async def start(self): |
2207
d662bdd682b2
jp (pubsub/node) added pubsub/node/affiliations/set command
Goffi <goffi@goffi.org>
parents:
2204
diff
changeset
|
459 affiliations = dict(self.args.affiliations) |
3040 | 460 try: |
461 await self.host.bridge.psNodeAffiliationsSet( | |
462 self.args.service, | |
463 self.args.node, | |
464 affiliations, | |
465 self.profile, | |
466 ) | |
467 except Exception as e: | |
468 self.disp(f"can't set node affiliations: {e}", error=True) | |
469 self.host.quit(C.EXIT_BRIDGE_ERRBACK) | |
470 else: | |
471 self.disp(_("affiliations have been set"), 1) | |
472 self.host.quit() | |
2207
d662bdd682b2
jp (pubsub/node) added pubsub/node/affiliations/set command
Goffi <goffi@goffi.org>
parents:
2204
diff
changeset
|
473 |
d662bdd682b2
jp (pubsub/node) added pubsub/node/affiliations/set command
Goffi <goffi@goffi.org>
parents:
2204
diff
changeset
|
474 |
2204
afc703419186
jp (pubsub): added affiliations and node/affiliations/get:
Goffi <goffi@goffi.org>
parents:
2199
diff
changeset
|
475 class NodeAffiliations(base.CommandBase): |
2207
d662bdd682b2
jp (pubsub/node) added pubsub/node/affiliations/set command
Goffi <goffi@goffi.org>
parents:
2204
diff
changeset
|
476 subcommands = (NodeAffiliationsGet, NodeAffiliationsSet) |
2204
afc703419186
jp (pubsub): added affiliations and node/affiliations/get:
Goffi <goffi@goffi.org>
parents:
2199
diff
changeset
|
477 |
afc703419186
jp (pubsub): added affiliations and node/affiliations/get:
Goffi <goffi@goffi.org>
parents:
2199
diff
changeset
|
478 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
479 super(NodeAffiliations, self).__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
480 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
481 "affiliations", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
482 use_profile=False, |
3028 | 483 help=_("set or retrieve node affiliations"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
484 ) |
2204
afc703419186
jp (pubsub): added affiliations and node/affiliations/get:
Goffi <goffi@goffi.org>
parents:
2199
diff
changeset
|
485 |
afc703419186
jp (pubsub): added affiliations and node/affiliations/get:
Goffi <goffi@goffi.org>
parents:
2199
diff
changeset
|
486 |
2339
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
487 class NodeSubscriptionsGet(base.CommandBase): |
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
488 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
489 base.CommandBase.__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
490 self, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
491 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
492 "get", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
493 use_output=C.OUTPUT_DICT, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
494 use_pubsub=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
495 pubsub_flags={C.NODE}, |
3028 | 496 help=_("retrieve node subscriptions (for node owner)"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
497 ) |
2339
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
498 |
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
499 def add_parser_options(self): |
3758
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
500 self.parser.add_argument( |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
501 "--public", |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
502 action="store_true", |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
503 help=_("get public subscriptions"), |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
504 ) |
2339
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
505 |
3040 | 506 async def start(self): |
3758
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
507 if self.args.public: |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
508 method = self.host.bridge.psPublicNodeSubscriptionsGet |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
509 else: |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
510 method = self.host.bridge.psNodeSubscriptionsGet |
3040 | 511 try: |
3758
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
512 subscriptions = await method( |
3040 | 513 self.args.service, |
514 self.args.node, | |
515 self.profile, | |
516 ) | |
517 except Exception as e: | |
518 self.disp(f"can't get node subscriptions: {e}", error=True) | |
519 self.host.quit(C.EXIT_BRIDGE_ERRBACK) | |
520 else: | |
521 await self.output(subscriptions) | |
522 self.host.quit() | |
2339
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
523 |
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
524 |
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
525 class StoreSubscriptionAction(argparse.Action): |
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
526 """Action which handle subscription parameter for owner |
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
527 |
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
528 list is given by pairs: jid and subscription state |
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
529 if subscription state is not specified, it default to "subscribed" |
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
530 """ |
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
531 |
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
532 def __call__(self, parser, namespace, values, option_string): |
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
533 dest_dict = getattr(namespace, self.dest) |
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
534 while values: |
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
535 jid_s = values.pop(0) |
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
536 try: |
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
537 subscription = values.pop(0) |
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
538 except IndexError: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
539 subscription = "subscribed" |
2339
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
540 if subscription not in ALLOWED_SUBSCRIPTIONS_OWNER: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
541 parser.error( |
3028 | 542 _("subscription must be one of {}").format( |
543 ", ".join(ALLOWED_SUBSCRIPTIONS_OWNER) | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
544 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
545 ) |
2339
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
546 dest_dict[jid_s] = subscription |
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
547 |
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
548 |
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
549 class NodeSubscriptionsSet(base.CommandBase): |
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
550 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
551 base.CommandBase.__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
552 self, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
553 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
554 "set", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
555 use_pubsub=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
556 pubsub_flags={C.NODE}, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
557 use_verbose=True, |
3028 | 558 help=_("set/modify subscriptions (for node owner)"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
559 ) |
2339
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
560 |
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
561 def add_parser_options(self): |
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
562 # XXX: we use optional argument syntax for a required one because list of list of 2 elements |
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
563 # (uses to construct dicts) don't work with positional arguments |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
564 self.parser.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
565 "-S", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
566 "--subscription", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
567 dest="subscriptions", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
568 default={}, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
569 nargs="+", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
570 metavar=("JID [SUSBSCRIPTION]"), |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
571 required=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
572 action=StoreSubscriptionAction, |
3028 | 573 help=_("entity/subscription couple(s)"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
574 ) |
2339
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
575 |
3040 | 576 async def start(self): |
577 try: | |
578 self.host.bridge.psNodeSubscriptionsSet( | |
579 self.args.service, | |
580 self.args.node, | |
581 self.args.subscriptions, | |
582 self.profile, | |
583 ) | |
584 except Exception as e: | |
585 self.disp(f"can't set node subscriptions: {e}", error=True) | |
586 self.host.quit(C.EXIT_BRIDGE_ERRBACK) | |
587 else: | |
588 self.disp(_("subscriptions have been set"), 1) | |
589 self.host.quit() | |
2339
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
590 |
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
591 |
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
592 class NodeSubscriptions(base.CommandBase): |
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
593 subcommands = (NodeSubscriptionsGet, NodeSubscriptionsSet) |
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
594 |
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
595 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
596 super(NodeSubscriptions, self).__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
597 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
598 "subscriptions", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
599 use_profile=False, |
3028 | 600 help=_("get or modify node subscriptions"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
601 ) |
2339
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
602 |
d94e932be8b3
jp (pubsub/node): added subscriptions subcommand:
Goffi <goffi@goffi.org>
parents:
2320
diff
changeset
|
603 |
2351
3c0a3fae1862
jp (pubsub/node): added schema (set/edit/get) commands to manipulate PubSub node schema
Goffi <goffi@goffi.org>
parents:
2339
diff
changeset
|
604 class NodeSchemaSet(base.CommandBase): |
3c0a3fae1862
jp (pubsub/node): added schema (set/edit/get) commands to manipulate PubSub node schema
Goffi <goffi@goffi.org>
parents:
2339
diff
changeset
|
605 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
606 base.CommandBase.__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
607 self, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
608 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
609 "set", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
610 use_pubsub=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
611 pubsub_flags={C.NODE}, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
612 use_verbose=True, |
3028 | 613 help=_("set/replace a schema"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
614 ) |
2351
3c0a3fae1862
jp (pubsub/node): added schema (set/edit/get) commands to manipulate PubSub node schema
Goffi <goffi@goffi.org>
parents:
2339
diff
changeset
|
615 |
3c0a3fae1862
jp (pubsub/node): added schema (set/edit/get) commands to manipulate PubSub node schema
Goffi <goffi@goffi.org>
parents:
2339
diff
changeset
|
616 def add_parser_options(self): |
3028 | 617 self.parser.add_argument("schema", help=_("schema to set (must be XML)")) |
2351
3c0a3fae1862
jp (pubsub/node): added schema (set/edit/get) commands to manipulate PubSub node schema
Goffi <goffi@goffi.org>
parents:
2339
diff
changeset
|
618 |
3040 | 619 async def start(self): |
620 try: | |
621 await self.host.bridge.psSchemaSet( | |
622 self.args.service, | |
623 self.args.node, | |
624 self.args.schema, | |
625 self.profile, | |
626 ) | |
627 except Exception as e: | |
628 self.disp(f"can't set schema: {e}", error=True) | |
629 self.host.quit(C.EXIT_BRIDGE_ERRBACK) | |
630 else: | |
631 self.disp(_("schema has been set"), 1) | |
632 self.host.quit() | |
2351
3c0a3fae1862
jp (pubsub/node): added schema (set/edit/get) commands to manipulate PubSub node schema
Goffi <goffi@goffi.org>
parents:
2339
diff
changeset
|
633 |
3c0a3fae1862
jp (pubsub/node): added schema (set/edit/get) commands to manipulate PubSub node schema
Goffi <goffi@goffi.org>
parents:
2339
diff
changeset
|
634 |
3c0a3fae1862
jp (pubsub/node): added schema (set/edit/get) commands to manipulate PubSub node schema
Goffi <goffi@goffi.org>
parents:
2339
diff
changeset
|
635 class NodeSchemaEdit(base.CommandBase, common.BaseEdit): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
636 use_items = False |
2351
3c0a3fae1862
jp (pubsub/node): added schema (set/edit/get) commands to manipulate PubSub node schema
Goffi <goffi@goffi.org>
parents:
2339
diff
changeset
|
637 |
3c0a3fae1862
jp (pubsub/node): added schema (set/edit/get) commands to manipulate PubSub node schema
Goffi <goffi@goffi.org>
parents:
2339
diff
changeset
|
638 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
639 base.CommandBase.__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
640 self, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
641 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
642 "edit", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
643 use_pubsub=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
644 pubsub_flags={C.NODE}, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
645 use_draft=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
646 use_verbose=True, |
3028 | 647 help=_("edit a schema"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
648 ) |
2351
3c0a3fae1862
jp (pubsub/node): added schema (set/edit/get) commands to manipulate PubSub node schema
Goffi <goffi@goffi.org>
parents:
2339
diff
changeset
|
649 common.BaseEdit.__init__(self, self.host, PUBSUB_SCHEMA_TMP_DIR) |
3c0a3fae1862
jp (pubsub/node): added schema (set/edit/get) commands to manipulate PubSub node schema
Goffi <goffi@goffi.org>
parents:
2339
diff
changeset
|
650 |
3c0a3fae1862
jp (pubsub/node): added schema (set/edit/get) commands to manipulate PubSub node schema
Goffi <goffi@goffi.org>
parents:
2339
diff
changeset
|
651 def add_parser_options(self): |
2532 | 652 pass |
2351
3c0a3fae1862
jp (pubsub/node): added schema (set/edit/get) commands to manipulate PubSub node schema
Goffi <goffi@goffi.org>
parents:
2339
diff
changeset
|
653 |
3040 | 654 async def publish(self, schema): |
655 try: | |
656 await self.host.bridge.psSchemaSet( | |
657 self.args.service, | |
658 self.args.node, | |
659 schema, | |
660 self.profile, | |
661 ) | |
662 except Exception as e: | |
663 self.disp(f"can't set schema: {e}", error=True) | |
664 self.host.quit(C.EXIT_BRIDGE_ERRBACK) | |
665 else: | |
666 self.disp(_("schema has been set"), 1) | |
667 self.host.quit() | |
2351
3c0a3fae1862
jp (pubsub/node): added schema (set/edit/get) commands to manipulate PubSub node schema
Goffi <goffi@goffi.org>
parents:
2339
diff
changeset
|
668 |
3040 | 669 async def psSchemaGetCb(self, schema): |
2351
3c0a3fae1862
jp (pubsub/node): added schema (set/edit/get) commands to manipulate PubSub node schema
Goffi <goffi@goffi.org>
parents:
2339
diff
changeset
|
670 try: |
3c0a3fae1862
jp (pubsub/node): added schema (set/edit/get) commands to manipulate PubSub node schema
Goffi <goffi@goffi.org>
parents:
2339
diff
changeset
|
671 from lxml import etree |
3c0a3fae1862
jp (pubsub/node): added schema (set/edit/get) commands to manipulate PubSub node schema
Goffi <goffi@goffi.org>
parents:
2339
diff
changeset
|
672 except ImportError: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
673 self.disp( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
674 "lxml module must be installed to use edit, please install it " |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
675 'with "pip install lxml"', |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
676 error=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
677 ) |
2351
3c0a3fae1862
jp (pubsub/node): added schema (set/edit/get) commands to manipulate PubSub node schema
Goffi <goffi@goffi.org>
parents:
2339
diff
changeset
|
678 self.host.quit(1) |
3c0a3fae1862
jp (pubsub/node): added schema (set/edit/get) commands to manipulate PubSub node schema
Goffi <goffi@goffi.org>
parents:
2339
diff
changeset
|
679 content_file_obj, content_file_path = self.getTmpFile() |
2359
47516e90d26a
jp (pubsub/node/schema): check that a schema exists before parsing it (fix issue on new schema edition)
Goffi <goffi@goffi.org>
parents:
2353
diff
changeset
|
680 schema = schema.strip() |
47516e90d26a
jp (pubsub/node/schema): check that a schema exists before parsing it (fix issue on new schema edition)
Goffi <goffi@goffi.org>
parents:
2353
diff
changeset
|
681 if schema: |
47516e90d26a
jp (pubsub/node/schema): check that a schema exists before parsing it (fix issue on new schema edition)
Goffi <goffi@goffi.org>
parents:
2353
diff
changeset
|
682 parser = etree.XMLParser(remove_blank_text=True) |
47516e90d26a
jp (pubsub/node/schema): check that a schema exists before parsing it (fix issue on new schema edition)
Goffi <goffi@goffi.org>
parents:
2353
diff
changeset
|
683 schema_elt = etree.fromstring(schema, parser) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
684 content_file_obj.write( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
685 etree.tostring(schema_elt, encoding="utf-8", pretty_print=True) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
686 ) |
2359
47516e90d26a
jp (pubsub/node/schema): check that a schema exists before parsing it (fix issue on new schema edition)
Goffi <goffi@goffi.org>
parents:
2353
diff
changeset
|
687 content_file_obj.seek(0) |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
688 await self.runEditor( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
689 "pubsub_schema_editor_args", content_file_path, content_file_obj |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
690 ) |
2351
3c0a3fae1862
jp (pubsub/node): added schema (set/edit/get) commands to manipulate PubSub node schema
Goffi <goffi@goffi.org>
parents:
2339
diff
changeset
|
691 |
3040 | 692 async def start(self): |
693 try: | |
694 schema = await self.host.bridge.psSchemaGet( | |
695 self.args.service, | |
696 self.args.node, | |
697 self.profile, | |
698 ) | |
3453
864485605d12
jp (pubsub/node/schema): handle not-found conditions properly
Goffi <goffi@goffi.org>
parents:
3413
diff
changeset
|
699 except BridgeException as e: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
700 if e.condition == "item-not-found" or e.classname == "NotFound": |
3453
864485605d12
jp (pubsub/node/schema): handle not-found conditions properly
Goffi <goffi@goffi.org>
parents:
3413
diff
changeset
|
701 schema = "" |
864485605d12
jp (pubsub/node/schema): handle not-found conditions properly
Goffi <goffi@goffi.org>
parents:
3413
diff
changeset
|
702 else: |
864485605d12
jp (pubsub/node/schema): handle not-found conditions properly
Goffi <goffi@goffi.org>
parents:
3413
diff
changeset
|
703 self.disp(f"can't edit schema: {e}", error=True) |
864485605d12
jp (pubsub/node/schema): handle not-found conditions properly
Goffi <goffi@goffi.org>
parents:
3413
diff
changeset
|
704 self.host.quit(C.EXIT_BRIDGE_ERRBACK) |
864485605d12
jp (pubsub/node/schema): handle not-found conditions properly
Goffi <goffi@goffi.org>
parents:
3413
diff
changeset
|
705 |
864485605d12
jp (pubsub/node/schema): handle not-found conditions properly
Goffi <goffi@goffi.org>
parents:
3413
diff
changeset
|
706 await self.psSchemaGetCb(schema) |
2351
3c0a3fae1862
jp (pubsub/node): added schema (set/edit/get) commands to manipulate PubSub node schema
Goffi <goffi@goffi.org>
parents:
2339
diff
changeset
|
707 |
3c0a3fae1862
jp (pubsub/node): added schema (set/edit/get) commands to manipulate PubSub node schema
Goffi <goffi@goffi.org>
parents:
2339
diff
changeset
|
708 |
3c0a3fae1862
jp (pubsub/node): added schema (set/edit/get) commands to manipulate PubSub node schema
Goffi <goffi@goffi.org>
parents:
2339
diff
changeset
|
709 class NodeSchemaGet(base.CommandBase): |
3c0a3fae1862
jp (pubsub/node): added schema (set/edit/get) commands to manipulate PubSub node schema
Goffi <goffi@goffi.org>
parents:
2339
diff
changeset
|
710 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
711 base.CommandBase.__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
712 self, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
713 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
714 "get", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
715 use_output=C.OUTPUT_XML, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
716 use_pubsub=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
717 pubsub_flags={C.NODE}, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
718 use_verbose=True, |
3028 | 719 help=_("get schema"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
720 ) |
2351
3c0a3fae1862
jp (pubsub/node): added schema (set/edit/get) commands to manipulate PubSub node schema
Goffi <goffi@goffi.org>
parents:
2339
diff
changeset
|
721 |
3c0a3fae1862
jp (pubsub/node): added schema (set/edit/get) commands to manipulate PubSub node schema
Goffi <goffi@goffi.org>
parents:
2339
diff
changeset
|
722 def add_parser_options(self): |
3c0a3fae1862
jp (pubsub/node): added schema (set/edit/get) commands to manipulate PubSub node schema
Goffi <goffi@goffi.org>
parents:
2339
diff
changeset
|
723 pass |
3c0a3fae1862
jp (pubsub/node): added schema (set/edit/get) commands to manipulate PubSub node schema
Goffi <goffi@goffi.org>
parents:
2339
diff
changeset
|
724 |
3040 | 725 async def start(self): |
726 try: | |
727 schema = await self.host.bridge.psSchemaGet( | |
728 self.args.service, | |
729 self.args.node, | |
730 self.profile, | |
731 ) | |
3453
864485605d12
jp (pubsub/node/schema): handle not-found conditions properly
Goffi <goffi@goffi.org>
parents:
3413
diff
changeset
|
732 except BridgeException as e: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
733 if e.condition == "item-not-found" or e.classname == "NotFound": |
3453
864485605d12
jp (pubsub/node/schema): handle not-found conditions properly
Goffi <goffi@goffi.org>
parents:
3413
diff
changeset
|
734 schema = None |
864485605d12
jp (pubsub/node/schema): handle not-found conditions properly
Goffi <goffi@goffi.org>
parents:
3413
diff
changeset
|
735 else: |
864485605d12
jp (pubsub/node/schema): handle not-found conditions properly
Goffi <goffi@goffi.org>
parents:
3413
diff
changeset
|
736 self.disp(f"can't get schema: {e}", error=True) |
864485605d12
jp (pubsub/node/schema): handle not-found conditions properly
Goffi <goffi@goffi.org>
parents:
3413
diff
changeset
|
737 self.host.quit(C.EXIT_BRIDGE_ERRBACK) |
864485605d12
jp (pubsub/node/schema): handle not-found conditions properly
Goffi <goffi@goffi.org>
parents:
3413
diff
changeset
|
738 |
864485605d12
jp (pubsub/node/schema): handle not-found conditions properly
Goffi <goffi@goffi.org>
parents:
3413
diff
changeset
|
739 if schema: |
864485605d12
jp (pubsub/node/schema): handle not-found conditions properly
Goffi <goffi@goffi.org>
parents:
3413
diff
changeset
|
740 await self.output(schema) |
864485605d12
jp (pubsub/node/schema): handle not-found conditions properly
Goffi <goffi@goffi.org>
parents:
3413
diff
changeset
|
741 self.host.quit() |
3040 | 742 else: |
3453
864485605d12
jp (pubsub/node/schema): handle not-found conditions properly
Goffi <goffi@goffi.org>
parents:
3413
diff
changeset
|
743 self.disp(_("no schema found"), 1) |
864485605d12
jp (pubsub/node/schema): handle not-found conditions properly
Goffi <goffi@goffi.org>
parents:
3413
diff
changeset
|
744 self.host.quit(C.EXIT_NOT_FOUND) |
2351
3c0a3fae1862
jp (pubsub/node): added schema (set/edit/get) commands to manipulate PubSub node schema
Goffi <goffi@goffi.org>
parents:
2339
diff
changeset
|
745 |
3c0a3fae1862
jp (pubsub/node): added schema (set/edit/get) commands to manipulate PubSub node schema
Goffi <goffi@goffi.org>
parents:
2339
diff
changeset
|
746 |
3c0a3fae1862
jp (pubsub/node): added schema (set/edit/get) commands to manipulate PubSub node schema
Goffi <goffi@goffi.org>
parents:
2339
diff
changeset
|
747 class NodeSchema(base.CommandBase): |
3c0a3fae1862
jp (pubsub/node): added schema (set/edit/get) commands to manipulate PubSub node schema
Goffi <goffi@goffi.org>
parents:
2339
diff
changeset
|
748 subcommands = (NodeSchemaSet, NodeSchemaEdit, NodeSchemaGet) |
3c0a3fae1862
jp (pubsub/node): added schema (set/edit/get) commands to manipulate PubSub node schema
Goffi <goffi@goffi.org>
parents:
2339
diff
changeset
|
749 |
3c0a3fae1862
jp (pubsub/node): added schema (set/edit/get) commands to manipulate PubSub node schema
Goffi <goffi@goffi.org>
parents:
2339
diff
changeset
|
750 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
751 super(NodeSchema, self).__init__( |
3028 | 752 host, "schema", use_profile=False, help=_("data schema manipulation") |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
753 ) |
2351
3c0a3fae1862
jp (pubsub/node): added schema (set/edit/get) commands to manipulate PubSub node schema
Goffi <goffi@goffi.org>
parents:
2339
diff
changeset
|
754 |
3c0a3fae1862
jp (pubsub/node): added schema (set/edit/get) commands to manipulate PubSub node schema
Goffi <goffi@goffi.org>
parents:
2339
diff
changeset
|
755 |
2197
e0e06391ce91
jp (pubsub): added pubsub/node/info command to retrieve node configuration
Goffi <goffi@goffi.org>
parents:
2195
diff
changeset
|
756 class Node(base.CommandBase): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
757 subcommands = ( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
758 NodeInfo, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
759 NodeCreate, |
2802
f61a50790fae
jp (pubsub/node): added purge command
Goffi <goffi@goffi.org>
parents:
2777
diff
changeset
|
760 NodePurge, |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
761 NodeDelete, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
762 NodeSet, |
2804
710de41da2f2
jp (pubsub/node): new "import" command, to publish many nodes from an XML file
Goffi <goffi@goffi.org>
parents:
2803
diff
changeset
|
763 NodeImport, |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
764 NodeAffiliations, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
765 NodeSubscriptions, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
766 NodeSchema, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
767 ) |
2197
e0e06391ce91
jp (pubsub): added pubsub/node/info command to retrieve node configuration
Goffi <goffi@goffi.org>
parents:
2195
diff
changeset
|
768 |
e0e06391ce91
jp (pubsub): added pubsub/node/info command to retrieve node configuration
Goffi <goffi@goffi.org>
parents:
2195
diff
changeset
|
769 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
770 super(Node, self).__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
771 host, "node", use_profile=False, help=_("node handling") |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
772 ) |
2197
e0e06391ce91
jp (pubsub): added pubsub/node/info command to retrieve node configuration
Goffi <goffi@goffi.org>
parents:
2195
diff
changeset
|
773 |
e0e06391ce91
jp (pubsub): added pubsub/node/info command to retrieve node configuration
Goffi <goffi@goffi.org>
parents:
2195
diff
changeset
|
774 |
3602
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
775 class CacheGet(base.CommandBase): |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
776 def __init__(self, host): |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
777 super().__init__( |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
778 host, |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
779 "get", |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
780 use_output=C.OUTPUT_LIST_XML, |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
781 use_pubsub=True, |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
782 pubsub_flags={C.NODE, C.MULTI_ITEMS, C.CACHE}, |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
783 help=_("get pubsub item(s) from cache"), |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
784 ) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
785 |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
786 def add_parser_options(self): |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
787 self.parser.add_argument( |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
788 "-S", |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
789 "--sub-id", |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
790 default="", |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
791 help=_("subscription id"), |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
792 ) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
793 |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
794 async def start(self): |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
795 try: |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
796 ps_result = data_format.deserialise( |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
797 await self.host.bridge.psCacheGet( |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
798 self.args.service, |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
799 self.args.node, |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
800 self.args.max, |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
801 self.args.items, |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
802 self.args.sub_id, |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
803 self.getPubsubExtra(), |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
804 self.profile, |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
805 ) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
806 ) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
807 except BridgeException as e: |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
808 if e.classname == "NotFound": |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
809 self.disp( |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
810 f"The node {self.args.node} from {self.args.service} is not in cache " |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
811 f"for {self.profile}", |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
812 error=True, |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
813 ) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
814 self.host.quit(C.EXIT_NOT_FOUND) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
815 else: |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
816 self.disp(f"can't get pubsub items from cache: {e}", error=True) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
817 self.host.quit(C.EXIT_BRIDGE_ERRBACK) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
818 except Exception as e: |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
819 self.disp(f"Internal error: {e}", error=True) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
820 self.host.quit(C.EXIT_INTERNAL_ERROR) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
821 else: |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
822 await self.output(ps_result["items"]) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
823 self.host.quit(C.EXIT_OK) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
824 |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
825 |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
826 class CacheSync(base.CommandBase): |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
827 |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
828 def __init__(self, host): |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
829 super().__init__( |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
830 host, |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
831 "sync", |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
832 use_pubsub=True, |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
833 pubsub_flags={C.NODE}, |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
834 help=_("(re)synchronise a pubsub node"), |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
835 ) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
836 |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
837 def add_parser_options(self): |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
838 pass |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
839 |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
840 async def start(self): |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
841 try: |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
842 await self.host.bridge.psCacheSync( |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
843 self.args.service, |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
844 self.args.node, |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
845 self.profile, |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
846 ) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
847 except BridgeException as e: |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
848 if e.condition == "item-not-found" or e.classname == "NotFound": |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
849 self.disp( |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
850 f"The node {self.args.node} doesn't exist on {self.args.service}", |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
851 error=True, |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
852 ) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
853 self.host.quit(C.EXIT_NOT_FOUND) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
854 else: |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
855 self.disp(f"can't synchronise pubsub node: {e}", error=True) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
856 self.host.quit(C.EXIT_BRIDGE_ERRBACK) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
857 except Exception as e: |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
858 self.disp(f"Internal error: {e}", error=True) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
859 self.host.quit(C.EXIT_INTERNAL_ERROR) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
860 else: |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
861 self.host.quit(C.EXIT_OK) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
862 |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
863 |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
864 class CachePurge(base.CommandBase): |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
865 |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
866 def __init__(self, host): |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
867 super().__init__( |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
868 host, |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
869 "purge", |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
870 use_profile=False, |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
871 help=_("purge (delete) items from cache"), |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
872 ) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
873 |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
874 def add_parser_options(self): |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
875 self.parser.add_argument( |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
876 "-s", "--service", action="append", metavar="JID", dest="services", |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
877 help="purge items only for these services. If not specified, items from ALL " |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
878 "services will be purged. May be used several times." |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
879 ) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
880 self.parser.add_argument( |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
881 "-n", "--node", action="append", dest="nodes", |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
882 help="purge items only for these nodes. If not specified, items from ALL " |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
883 "nodes will be purged. May be used several times." |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
884 ) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
885 self.parser.add_argument( |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
886 "-p", "--profile", action="append", dest="profiles", |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
887 help="purge items only for these profiles. If not specified, items from ALL " |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
888 "profiles will be purged. May be used several times." |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
889 ) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
890 self.parser.add_argument( |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
891 "-b", "--updated-before", type=base.date_decoder, metavar="TIME_PATTERN", |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
892 help="purge items which have been last updated before given time." |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
893 ) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
894 self.parser.add_argument( |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
895 "-C", "--created-before", type=base.date_decoder, metavar="TIME_PATTERN", |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
896 help="purge items which have been last created before given time." |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
897 ) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
898 self.parser.add_argument( |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
899 "-t", "--type", action="append", dest="types", |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
900 help="purge items flagged with TYPE. May be used several times." |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
901 ) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
902 self.parser.add_argument( |
3618
7f503b20597e
jp (pubsub/cache/purge): fix conflict with `subtype` short option
Goffi <goffi@goffi.org>
parents:
3602
diff
changeset
|
903 "-S", "--subtype", action="append", dest="subtypes", |
3602
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
904 help="purge items flagged with SUBTYPE. May be used several times." |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
905 ) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
906 self.parser.add_argument( |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
907 "-f", "--force", action="store_true", |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
908 help=_("purge items without confirmation") |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
909 ) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
910 |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
911 async def start(self): |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
912 if not self.args.force: |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
913 await self.host.confirmOrQuit( |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
914 _( |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
915 "Are you sure to purge items from cache? You'll have to bypass cache " |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
916 "or resynchronise nodes to access deleted items again." |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
917 ), |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
918 _("Items purgins has been cancelled.") |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
919 ) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
920 purge_data = {} |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
921 for key in ( |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
922 "services", "nodes", "profiles", "updated_before", "created_before", |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
923 "types", "subtypes" |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
924 ): |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
925 value = getattr(self.args, key) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
926 if value is not None: |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
927 purge_data[key] = value |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
928 try: |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
929 await self.host.bridge.psCachePurge( |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
930 data_format.serialise( |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
931 purge_data |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
932 ) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
933 ) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
934 except Exception as e: |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
935 self.disp(f"Internal error: {e}", error=True) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
936 self.host.quit(C.EXIT_INTERNAL_ERROR) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
937 else: |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
938 self.host.quit(C.EXIT_OK) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
939 |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
940 |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
941 class CacheReset(base.CommandBase): |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
942 |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
943 def __init__(self, host): |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
944 super().__init__( |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
945 host, |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
946 "reset", |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
947 use_profile=False, |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
948 help=_("remove everything from cache"), |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
949 ) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
950 |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
951 def add_parser_options(self): |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
952 self.parser.add_argument( |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
953 "-f", "--force", action="store_true", |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
954 help=_("reset cache without confirmation") |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
955 ) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
956 |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
957 async def start(self): |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
958 if not self.args.force: |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
959 await self.host.confirmOrQuit( |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
960 _( |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
961 "Are you sure to reset cache? All nodes and items will be removed " |
3668
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
962 "from it, then it will be progressively refilled as if it were new. " |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
963 "This may be resources intensive." |
3602
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
964 ), |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
965 _("Pubsub cache reset has been cancelled.") |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
966 ) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
967 try: |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
968 await self.host.bridge.psCacheReset() |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
969 except Exception as e: |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
970 self.disp(f"Internal error: {e}", error=True) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
971 self.host.quit(C.EXIT_INTERNAL_ERROR) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
972 else: |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
973 self.host.quit(C.EXIT_OK) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
974 |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
975 |
3668
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
976 class CacheSearch(base.CommandBase): |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
977 def __init__(self, host): |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
978 extra_outputs = { |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
979 "default": self.default_output, |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
980 "xml": self.xml_output, |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
981 "xml-raw": self.xml_raw_output, |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
982 } |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
983 super().__init__( |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
984 host, |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
985 "search", |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
986 use_profile=False, |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
987 use_output=C.OUTPUT_LIST_DICT, |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
988 extra_outputs=extra_outputs, |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
989 help=_("search for pubsub items in cache"), |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
990 ) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
991 |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
992 def add_parser_options(self): |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
993 self.parser.add_argument( |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
994 "-f", "--fts", help=_("Full-Text Search query"), metavar="FTS_QUERY" |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
995 ) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
996 self.parser.add_argument( |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
997 "-p", "--profile", action="append", dest="profiles", metavar="PROFILE", |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
998 help="search items only from these profiles. May be used several times." |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
999 ) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1000 self.parser.add_argument( |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1001 "-s", "--service", action="append", dest="services", metavar="SERVICE", |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1002 help="items must be from specified service. May be used several times." |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1003 ) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1004 self.parser.add_argument( |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1005 "-n", "--node", action="append", dest="nodes", metavar="NODE", |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1006 help="items must be in the specified node. May be used several times." |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1007 ) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1008 self.parser.add_argument( |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1009 "-t", "--type", action="append", dest="types", metavar="TYPE", |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1010 help="items must be of specified type. May be used several times." |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1011 ) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1012 self.parser.add_argument( |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1013 "-S", "--subtype", action="append", dest="subtypes", metavar="SUBTYPE", |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1014 help="items must be of specified subtype. May be used several times." |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1015 ) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1016 self.parser.add_argument( |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1017 "-P", "--payload", action="store_true", help=_("include item XML payload") |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1018 ) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1019 self.parser.add_argument( |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1020 "-o", "--order-by", action="append", nargs="+", |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1021 metavar=("ORDER", "[FIELD] [DIRECTION]"), |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1022 help=_("how items must be ordered. May be used several times.") |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1023 ) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1024 self.parser.add_argument( |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1025 "-l", "--limit", type=int, help=_("maximum number of items to return") |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1026 ) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1027 self.parser.add_argument( |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1028 "-i", "--index", type=int, help=_("return results starting from this index") |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1029 ) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1030 self.parser.add_argument( |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1031 "-F", |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1032 "--field", |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1033 action="append", |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1034 nargs=3, |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1035 dest="fields", |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1036 default=[], |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1037 metavar=("PATH", "OPERATOR", "VALUE"), |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1038 help=_("parsed data field filter. May be used several times."), |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1039 ) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1040 self.parser.add_argument( |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1041 "-k", |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1042 "--key", |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1043 action="append", |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1044 dest="keys", |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1045 metavar="KEY", |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1046 help=_( |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1047 "data key(s) to display. May be used several times. DEFAULT: show all " |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1048 "keys" |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1049 ), |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1050 ) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1051 |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1052 async def start(self): |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1053 query = {} |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1054 for arg in ("fts", "profiles", "services", "nodes", "types", "subtypes"): |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1055 value = getattr(self.args, arg) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1056 if value: |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1057 if arg in ("types", "subtypes"): |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1058 # empty string is used to find items without type and/or subtype |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1059 value = [v or None for v in value] |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1060 query[arg] = value |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1061 for arg in ("limit", "index"): |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1062 value = getattr(self.args, arg) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1063 if value is not None: |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1064 query[arg] = value |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1065 if self.args.order_by is not None: |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1066 for order_data in self.args.order_by: |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1067 order, *args = order_data |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1068 if order == "field": |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1069 if not args: |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1070 self.parser.error(_("field data must be specified in --order-by")) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1071 elif len(args) == 1: |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1072 path = args[0] |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1073 direction = "asc" |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1074 elif len(args) == 2: |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1075 path, direction = args |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1076 else: |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1077 self.parser.error(_( |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1078 "You can't specify more that 2 arguments for a field in " |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1079 "--order-by" |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1080 )) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1081 try: |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1082 path = json.loads(path) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1083 except json.JSONDecodeError: |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1084 pass |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1085 order_query = { |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1086 "path": path, |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1087 } |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1088 else: |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1089 order_query = { |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1090 "order": order |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1091 } |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1092 if not args: |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1093 direction = "asc" |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1094 elif len(args) == 1: |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1095 direction = args[0] |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1096 else: |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1097 self.parser.error(_( |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1098 "there are too many arguments in --order-by option" |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1099 )) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1100 if direction.lower() not in ("asc", "desc"): |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1101 self.parser.error(_("invalid --order-by direction: {direction!r}")) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1102 order_query["direction"] = direction |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1103 query.setdefault("order-by", []).append(order_query) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1104 |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1105 if self.args.fields: |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1106 parsed = [] |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1107 for field in self.args.fields: |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1108 path, operator, value = field |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1109 try: |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1110 path = json.loads(path) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1111 except json.JSONDecodeError: |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1112 # this is not a JSON encoded value, we keep it as a string |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1113 pass |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1114 |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1115 if not isinstance(path, list): |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1116 path = [path] |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1117 |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1118 # handling of TP(<time pattern>) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1119 if operator in (">", "gt", "<", "le", "between"): |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1120 def datetime_sub(match): |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1121 return str(date_utils.date_parse_ext( |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1122 match.group(1), default_tz=date_utils.TZ_LOCAL |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1123 )) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1124 value = re.sub(r"\bTP\(([^)]+)\)", datetime_sub, value) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1125 |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1126 try: |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1127 value = json.loads(value) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1128 except json.JSONDecodeError: |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1129 # not JSON, as above we keep it as string |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1130 pass |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1131 |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1132 if operator in ("overlap", "ioverlap", "disjoint", "idisjoint"): |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1133 if not isinstance(value, list): |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1134 value = [value] |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1135 |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1136 parsed.append({ |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1137 "path": path, |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1138 "op": operator, |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1139 "value": value |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1140 }) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1141 |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1142 query["parsed"] = parsed |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1143 |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1144 if self.args.payload or "xml" in self.args.output: |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1145 query["with_payload"] = True |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1146 if self.args.keys: |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1147 self.args.keys.append("item_payload") |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1148 try: |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1149 found_items = data_format.deserialise( |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1150 await self.host.bridge.psCacheSearch( |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1151 data_format.serialise(query) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1152 ), |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1153 type_check=list, |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1154 ) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1155 except BridgeException as e: |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1156 self.disp(f"can't search for pubsub items in cache: {e}", error=True) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1157 self.host.quit(C.EXIT_BRIDGE_ERRBACK) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1158 except Exception as e: |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1159 self.disp(f"Internal error: {e}", error=True) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1160 self.host.quit(C.EXIT_INTERNAL_ERROR) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1161 else: |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1162 if self.args.keys: |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1163 found_items = [ |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1164 {k: v for k,v in item.items() if k in self.args.keys} |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1165 for item in found_items |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1166 ] |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1167 await self.output(found_items) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1168 self.host.quit(C.EXIT_OK) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1169 |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1170 def default_output(self, found_items): |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1171 for item in found_items: |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1172 for field in ("created", "published", "updated"): |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1173 try: |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1174 timestamp = item[field] |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1175 except KeyError: |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1176 pass |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1177 else: |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1178 try: |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1179 item[field] = common.format_time(timestamp) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1180 except ValueError: |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1181 pass |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1182 self.host._outputs[C.OUTPUT_LIST_DICT]["simple"]["callback"](found_items) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1183 |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1184 def xml_output(self, found_items): |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1185 """Output prettified item payload""" |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1186 cb = self.host._outputs[C.OUTPUT_XML][C.OUTPUT_NAME_XML]["callback"] |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1187 for item in found_items: |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1188 cb(item["item_payload"]) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1189 |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1190 def xml_raw_output(self, found_items): |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1191 """Output item payload without prettifying""" |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1192 cb = self.host._outputs[C.OUTPUT_XML][C.OUTPUT_NAME_XML_RAW]["callback"] |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1193 for item in found_items: |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1194 cb(item["item_payload"]) |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1195 |
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1196 |
3602
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
1197 class Cache(base.CommandBase): |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
1198 subcommands = ( |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
1199 CacheGet, |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
1200 CacheSync, |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
1201 CachePurge, |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
1202 CacheReset, |
3668
0eacda79b5d1
CLI (pubsub/cache): `search` implementation
Goffi <goffi@goffi.org>
parents:
3618
diff
changeset
|
1203 CacheSearch, |
3602
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
1204 ) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
1205 |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
1206 def __init__(self, host): |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
1207 super(Cache, self).__init__( |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
1208 host, "cache", use_profile=False, help=_("pubsub cache handling") |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
1209 ) |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
1210 |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
1211 |
2439
6908fe4c6eca
jp (pubsub): added new "set" command tu publish or update an item in a non-interactive way (while "edit" do it interactively).
Goffi <goffi@goffi.org>
parents:
2416
diff
changeset
|
1212 class Set(base.CommandBase): |
6908fe4c6eca
jp (pubsub): added new "set" command tu publish or update an item in a non-interactive way (while "edit" do it interactively).
Goffi <goffi@goffi.org>
parents:
2416
diff
changeset
|
1213 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1214 base.CommandBase.__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1215 self, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1216 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1217 "set", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1218 use_pubsub=True, |
3412
7b4ae3dbc041
jp (base, pubsub/set): new `--quiet` argument:
Goffi <goffi@goffi.org>
parents:
3411
diff
changeset
|
1219 use_quiet=True, |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1220 pubsub_flags={C.NODE}, |
3028 | 1221 help=_("publish a new item or update an existing one"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1222 ) |
2439
6908fe4c6eca
jp (pubsub): added new "set" command tu publish or update an item in a non-interactive way (while "edit" do it interactively).
Goffi <goffi@goffi.org>
parents:
2416
diff
changeset
|
1223 |
6908fe4c6eca
jp (pubsub): added new "set" command tu publish or update an item in a non-interactive way (while "edit" do it interactively).
Goffi <goffi@goffi.org>
parents:
2416
diff
changeset
|
1224 def add_parser_options(self): |
3100
cea52c9ddfd9
plugin XEP-0060, jp (pubsub/set): publish-options implementation:
Goffi <goffi@goffi.org>
parents:
3040
diff
changeset
|
1225 NodeCreate.add_node_config_options(self.parser) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1226 self.parser.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1227 "item", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1228 nargs="?", |
3028 | 1229 default="", |
1230 help=_("id, URL of the item to update, keyword, or nothing for new item"), | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1231 ) |
2439
6908fe4c6eca
jp (pubsub): added new "set" command tu publish or update an item in a non-interactive way (while "edit" do it interactively).
Goffi <goffi@goffi.org>
parents:
2416
diff
changeset
|
1232 |
3040 | 1233 async def start(self): |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
1234 element, etree = xml_tools.etreeParse(self, sys.stdin) |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
1235 element = xml_tools.getPayload(self, element) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1236 payload = etree.tostring(element, encoding="unicode") |
3100
cea52c9ddfd9
plugin XEP-0060, jp (pubsub/set): publish-options implementation:
Goffi <goffi@goffi.org>
parents:
3040
diff
changeset
|
1237 extra = {} |
cea52c9ddfd9
plugin XEP-0060, jp (pubsub/set): publish-options implementation:
Goffi <goffi@goffi.org>
parents:
3040
diff
changeset
|
1238 publish_options = NodeCreate.get_config_options(self.args) |
cea52c9ddfd9
plugin XEP-0060, jp (pubsub/set): publish-options implementation:
Goffi <goffi@goffi.org>
parents:
3040
diff
changeset
|
1239 if publish_options: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1240 extra["publish_options"] = publish_options |
2439
6908fe4c6eca
jp (pubsub): added new "set" command tu publish or update an item in a non-interactive way (while "edit" do it interactively).
Goffi <goffi@goffi.org>
parents:
2416
diff
changeset
|
1241 |
3040 | 1242 try: |
1243 published_id = await self.host.bridge.psItemSend( | |
1244 self.args.service, | |
1245 self.args.node, | |
1246 payload, | |
1247 self.args.item, | |
3100
cea52c9ddfd9
plugin XEP-0060, jp (pubsub/set): publish-options implementation:
Goffi <goffi@goffi.org>
parents:
3040
diff
changeset
|
1248 data_format.serialise(extra), |
3040 | 1249 self.profile, |
1250 ) | |
1251 except Exception as e: | |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1252 self.disp(_("can't send item: {e}").format(e=e), error=True) |
3040 | 1253 self.host.quit(C.EXIT_BRIDGE_ERRBACK) |
1254 else: | |
1255 if published_id: | |
3412
7b4ae3dbc041
jp (base, pubsub/set): new `--quiet` argument:
Goffi <goffi@goffi.org>
parents:
3411
diff
changeset
|
1256 if self.args.quiet: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1257 self.disp(published_id, end="") |
3412
7b4ae3dbc041
jp (base, pubsub/set): new `--quiet` argument:
Goffi <goffi@goffi.org>
parents:
3411
diff
changeset
|
1258 else: |
7b4ae3dbc041
jp (base, pubsub/set): new `--quiet` argument:
Goffi <goffi@goffi.org>
parents:
3411
diff
changeset
|
1259 self.disp(f"Item published at {published_id}") |
3040 | 1260 else: |
1261 self.disp("Item published") | |
1262 self.host.quit(C.EXIT_OK) | |
2439
6908fe4c6eca
jp (pubsub): added new "set" command tu publish or update an item in a non-interactive way (while "edit" do it interactively).
Goffi <goffi@goffi.org>
parents:
2416
diff
changeset
|
1263 |
6908fe4c6eca
jp (pubsub): added new "set" command tu publish or update an item in a non-interactive way (while "edit" do it interactively).
Goffi <goffi@goffi.org>
parents:
2416
diff
changeset
|
1264 |
2235
4db836386641
jp: added use_pubsub and use_pubsub_node_req arguments to CommandBase
Goffi <goffi@goffi.org>
parents:
2224
diff
changeset
|
1265 class Get(base.CommandBase): |
2191
a1a8233f89e8
jp(pubsub/get): pubsub/get command, first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
1266 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1267 base.CommandBase.__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1268 self, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1269 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1270 "get", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1271 use_output=C.OUTPUT_LIST_XML, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1272 use_pubsub=True, |
3600
1709f0a78f50
jp (base): add flag for `use_pubsub` to add cache skipping option
Goffi <goffi@goffi.org>
parents:
3586
diff
changeset
|
1273 pubsub_flags={C.NODE, C.MULTI_ITEMS, C.CACHE}, |
3028 | 1274 help=_("get pubsub item(s)"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1275 ) |
2191
a1a8233f89e8
jp(pubsub/get): pubsub/get command, first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
1276 |
a1a8233f89e8
jp(pubsub/get): pubsub/get command, first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
1277 def add_parser_options(self): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1278 self.parser.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1279 "-S", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1280 "--sub-id", |
3028 | 1281 default="", |
1282 help=_("subscription id"), | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1283 ) |
3938
6939594ba77e
cli (pubsub/get): add `--no-decrypt` flag to disable automatic decryption:
Goffi <goffi@goffi.org>
parents:
3889
diff
changeset
|
1284 self.parser.add_argument( |
6939594ba77e
cli (pubsub/get): add `--no-decrypt` flag to disable automatic decryption:
Goffi <goffi@goffi.org>
parents:
3889
diff
changeset
|
1285 "--no-decrypt", |
6939594ba77e
cli (pubsub/get): add `--no-decrypt` flag to disable automatic decryption:
Goffi <goffi@goffi.org>
parents:
3889
diff
changeset
|
1286 action="store_true", |
6939594ba77e
cli (pubsub/get): add `--no-decrypt` flag to disable automatic decryption:
Goffi <goffi@goffi.org>
parents:
3889
diff
changeset
|
1287 help=_("don't do automatic decryption of e2ee items"), |
6939594ba77e
cli (pubsub/get): add `--no-decrypt` flag to disable automatic decryption:
Goffi <goffi@goffi.org>
parents:
3889
diff
changeset
|
1288 ) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1289 # TODO: a key(s) argument to select keys to display |
2191
a1a8233f89e8
jp(pubsub/get): pubsub/get command, first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
1290 |
3040 | 1291 async def start(self): |
3938
6939594ba77e
cli (pubsub/get): add `--no-decrypt` flag to disable automatic decryption:
Goffi <goffi@goffi.org>
parents:
3889
diff
changeset
|
1292 extra = {} |
6939594ba77e
cli (pubsub/get): add `--no-decrypt` flag to disable automatic decryption:
Goffi <goffi@goffi.org>
parents:
3889
diff
changeset
|
1293 if self.args.no_decrypt: |
6939594ba77e
cli (pubsub/get): add `--no-decrypt` flag to disable automatic decryption:
Goffi <goffi@goffi.org>
parents:
3889
diff
changeset
|
1294 extra["decrypt"] = False |
3040 | 1295 try: |
3312
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1296 ps_result = data_format.deserialise( |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1297 await self.host.bridge.psItemsGet( |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1298 self.args.service, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1299 self.args.node, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1300 self.args.max, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1301 self.args.items, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1302 self.args.sub_id, |
3938
6939594ba77e
cli (pubsub/get): add `--no-decrypt` flag to disable automatic decryption:
Goffi <goffi@goffi.org>
parents:
3889
diff
changeset
|
1303 self.getPubsubExtra(extra), |
3312
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1304 self.profile, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1305 ) |
3040 | 1306 ) |
3413
f4d417593e77
jp (pubsub/node/info, pubsub/get): better exit code:
Goffi <goffi@goffi.org>
parents:
3412
diff
changeset
|
1307 except BridgeException as e: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1308 if e.condition == "item-not-found" or e.classname == "NotFound": |
3413
f4d417593e77
jp (pubsub/node/info, pubsub/get): better exit code:
Goffi <goffi@goffi.org>
parents:
3412
diff
changeset
|
1309 self.disp( |
f4d417593e77
jp (pubsub/node/info, pubsub/get): better exit code:
Goffi <goffi@goffi.org>
parents:
3412
diff
changeset
|
1310 f"The node {self.args.node} doesn't exist on {self.args.service}", |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1311 error=True, |
3413
f4d417593e77
jp (pubsub/node/info, pubsub/get): better exit code:
Goffi <goffi@goffi.org>
parents:
3412
diff
changeset
|
1312 ) |
f4d417593e77
jp (pubsub/node/info, pubsub/get): better exit code:
Goffi <goffi@goffi.org>
parents:
3412
diff
changeset
|
1313 self.host.quit(C.EXIT_NOT_FOUND) |
f4d417593e77
jp (pubsub/node/info, pubsub/get): better exit code:
Goffi <goffi@goffi.org>
parents:
3412
diff
changeset
|
1314 else: |
f4d417593e77
jp (pubsub/node/info, pubsub/get): better exit code:
Goffi <goffi@goffi.org>
parents:
3412
diff
changeset
|
1315 self.disp(f"can't get pubsub items: {e}", error=True) |
f4d417593e77
jp (pubsub/node/info, pubsub/get): better exit code:
Goffi <goffi@goffi.org>
parents:
3412
diff
changeset
|
1316 self.host.quit(C.EXIT_BRIDGE_ERRBACK) |
3040 | 1317 except Exception as e: |
3413
f4d417593e77
jp (pubsub/node/info, pubsub/get): better exit code:
Goffi <goffi@goffi.org>
parents:
3412
diff
changeset
|
1318 self.disp(f"Internal error: {e}", error=True) |
f4d417593e77
jp (pubsub/node/info, pubsub/get): better exit code:
Goffi <goffi@goffi.org>
parents:
3412
diff
changeset
|
1319 self.host.quit(C.EXIT_INTERNAL_ERROR) |
3040 | 1320 else: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1321 await self.output(ps_result["items"]) |
3040 | 1322 self.host.quit(C.EXIT_OK) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1323 |
2191
a1a8233f89e8
jp(pubsub/get): pubsub/get command, first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
1324 |
2281
4af1805cc6df
jp (pubsub/delete): delete command implementation (to delete an item)
Goffi <goffi@goffi.org>
parents:
2280
diff
changeset
|
1325 class Delete(base.CommandBase): |
4af1805cc6df
jp (pubsub/delete): delete command implementation (to delete an item)
Goffi <goffi@goffi.org>
parents:
2280
diff
changeset
|
1326 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1327 base.CommandBase.__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1328 self, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1329 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1330 "delete", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1331 use_pubsub=True, |
2910
b2f323237fce
jp, plugin merge-requests: used u'' as default for item id in pubsub arguments + fixed some required arguments:
Goffi <goffi@goffi.org>
parents:
2805
diff
changeset
|
1332 pubsub_flags={C.NODE, C.ITEM, C.SINGLE_ITEM}, |
3028 | 1333 help=_("delete an item"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1334 ) |
2281
4af1805cc6df
jp (pubsub/delete): delete command implementation (to delete an item)
Goffi <goffi@goffi.org>
parents:
2280
diff
changeset
|
1335 |
4af1805cc6df
jp (pubsub/delete): delete command implementation (to delete an item)
Goffi <goffi@goffi.org>
parents:
2280
diff
changeset
|
1336 def add_parser_options(self): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1337 self.parser.add_argument( |
3028 | 1338 "-f", "--force", action="store_true", help=_("delete without confirmation") |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1339 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1340 self.parser.add_argument( |
3601
b46e9791168f
jp (pubsub/delete): make notification the default, `--notify` option is replaced by `--no-notification`
Goffi <goffi@goffi.org>
parents:
3600
diff
changeset
|
1341 "--no-notification", dest="notify", action="store_false", |
b46e9791168f
jp (pubsub/delete): make notification the default, `--notify` option is replaced by `--no-notification`
Goffi <goffi@goffi.org>
parents:
3600
diff
changeset
|
1342 help=_("do not send notification (not recommended)") |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1343 ) |
2281
4af1805cc6df
jp (pubsub/delete): delete command implementation (to delete an item)
Goffi <goffi@goffi.org>
parents:
2280
diff
changeset
|
1344 |
3040 | 1345 async def start(self): |
2281
4af1805cc6df
jp (pubsub/delete): delete command implementation (to delete an item)
Goffi <goffi@goffi.org>
parents:
2280
diff
changeset
|
1346 if not self.args.item: |
3028 | 1347 self.parser.error(_("You need to specify an item to delete")) |
2281
4af1805cc6df
jp (pubsub/delete): delete command implementation (to delete an item)
Goffi <goffi@goffi.org>
parents:
2280
diff
changeset
|
1348 if not self.args.force: |
3028 | 1349 message = _("Are you sure to delete item {item_id} ?").format( |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1350 item_id=self.args.item |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1351 ) |
3040 | 1352 await self.host.confirmOrQuit(message, _("item deletion cancelled")) |
1353 try: | |
3467
5901a7170528
plugin XEP-0060: renamed `psRetractItem(s)` to `psItem(s)Retract` for consistency.
Goffi <goffi@goffi.org>
parents:
3453
diff
changeset
|
1354 await self.host.bridge.psItemRetract( |
3040 | 1355 self.args.service, |
1356 self.args.node, | |
1357 self.args.item, | |
1358 self.args.notify, | |
1359 self.profile, | |
1360 ) | |
1361 except Exception as e: | |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1362 self.disp(_("can't delete item: {e}").format(e=e), error=True) |
3040 | 1363 self.host.quit(C.EXIT_BRIDGE_ERRBACK) |
1364 else: | |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1365 self.disp(_("item {item} has been deleted").format(item=self.args.item)) |
3040 | 1366 self.host.quit(C.EXIT_OK) |
2281
4af1805cc6df
jp (pubsub/delete): delete command implementation (to delete an item)
Goffi <goffi@goffi.org>
parents:
2280
diff
changeset
|
1367 |
2191
a1a8233f89e8
jp(pubsub/get): pubsub/get command, first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
1368 |
2275
64e99bf0dfa2
jp (pubsub/edit): new edit subcommand, which work in a same way as for blog
Goffi <goffi@goffi.org>
parents:
2274
diff
changeset
|
1369 class Edit(base.CommandBase, common.BaseEdit): |
64e99bf0dfa2
jp (pubsub/edit): new edit subcommand, which work in a same way as for blog
Goffi <goffi@goffi.org>
parents:
2274
diff
changeset
|
1370 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1371 base.CommandBase.__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1372 self, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1373 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1374 "edit", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1375 use_verbose=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1376 use_pubsub=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1377 pubsub_flags={C.NODE, C.SINGLE_ITEM}, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1378 use_draft=True, |
3028 | 1379 help=_("edit an existing or new pubsub item"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1380 ) |
2275
64e99bf0dfa2
jp (pubsub/edit): new edit subcommand, which work in a same way as for blog
Goffi <goffi@goffi.org>
parents:
2274
diff
changeset
|
1381 common.BaseEdit.__init__(self, self.host, PUBSUB_TMP_DIR) |
64e99bf0dfa2
jp (pubsub/edit): new edit subcommand, which work in a same way as for blog
Goffi <goffi@goffi.org>
parents:
2274
diff
changeset
|
1382 |
64e99bf0dfa2
jp (pubsub/edit): new edit subcommand, which work in a same way as for blog
Goffi <goffi@goffi.org>
parents:
2274
diff
changeset
|
1383 def add_parser_options(self): |
2532 | 1384 pass |
2275
64e99bf0dfa2
jp (pubsub/edit): new edit subcommand, which work in a same way as for blog
Goffi <goffi@goffi.org>
parents:
2274
diff
changeset
|
1385 |
3040 | 1386 async def publish(self, content): |
1387 published_id = await self.host.bridge.psItemSend( | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1388 self.pubsub_service, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1389 self.pubsub_node, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1390 content, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1391 self.pubsub_item or "", |
3100
cea52c9ddfd9
plugin XEP-0060, jp (pubsub/set): publish-options implementation:
Goffi <goffi@goffi.org>
parents:
3040
diff
changeset
|
1392 "", |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1393 self.profile, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1394 ) |
2275
64e99bf0dfa2
jp (pubsub/edit): new edit subcommand, which work in a same way as for blog
Goffi <goffi@goffi.org>
parents:
2274
diff
changeset
|
1395 if published_id: |
3028 | 1396 self.disp("Item published at {pub_id}".format(pub_id=published_id)) |
2275
64e99bf0dfa2
jp (pubsub/edit): new edit subcommand, which work in a same way as for blog
Goffi <goffi@goffi.org>
parents:
2274
diff
changeset
|
1397 else: |
3028 | 1398 self.disp("Item published") |
2275
64e99bf0dfa2
jp (pubsub/edit): new edit subcommand, which work in a same way as for blog
Goffi <goffi@goffi.org>
parents:
2274
diff
changeset
|
1399 |
3040 | 1400 async def getItemData(self, service, node, item): |
2275
64e99bf0dfa2
jp (pubsub/edit): new edit subcommand, which work in a same way as for blog
Goffi <goffi@goffi.org>
parents:
2274
diff
changeset
|
1401 try: |
64e99bf0dfa2
jp (pubsub/edit): new edit subcommand, which work in a same way as for blog
Goffi <goffi@goffi.org>
parents:
2274
diff
changeset
|
1402 from lxml import etree |
64e99bf0dfa2
jp (pubsub/edit): new edit subcommand, which work in a same way as for blog
Goffi <goffi@goffi.org>
parents:
2274
diff
changeset
|
1403 except ImportError: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1404 self.disp( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1405 "lxml module must be installed to use edit, please install it " |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1406 'with "pip install lxml"', |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1407 error=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1408 ) |
2275
64e99bf0dfa2
jp (pubsub/edit): new edit subcommand, which work in a same way as for blog
Goffi <goffi@goffi.org>
parents:
2274
diff
changeset
|
1409 self.host.quit(1) |
2910
b2f323237fce
jp, plugin merge-requests: used u'' as default for item id in pubsub arguments + fixed some required arguments:
Goffi <goffi@goffi.org>
parents:
2805
diff
changeset
|
1410 items = [item] if item else [] |
3312
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1411 ps_result = data_format.deserialise( |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1412 await self.host.bridge.psItemsGet( |
3586
5f65f4e9f8cb
plugin XEP-0060: getItems extra is now serialised dict
Goffi <goffi@goffi.org>
parents:
3568
diff
changeset
|
1413 service, node, 1, items, "", data_format.serialise({}), self.profile |
3312
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1414 ) |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1415 ) |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1416 item_raw = ps_result["items"][0] |
3040 | 1417 parser = etree.XMLParser(remove_blank_text=True, recover=True) |
2275
64e99bf0dfa2
jp (pubsub/edit): new edit subcommand, which work in a same way as for blog
Goffi <goffi@goffi.org>
parents:
2274
diff
changeset
|
1418 item_elt = etree.fromstring(item_raw, parser) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1419 item_id = item_elt.get("id") |
2275
64e99bf0dfa2
jp (pubsub/edit): new edit subcommand, which work in a same way as for blog
Goffi <goffi@goffi.org>
parents:
2274
diff
changeset
|
1420 try: |
64e99bf0dfa2
jp (pubsub/edit): new edit subcommand, which work in a same way as for blog
Goffi <goffi@goffi.org>
parents:
2274
diff
changeset
|
1421 payload = item_elt[0] |
64e99bf0dfa2
jp (pubsub/edit): new edit subcommand, which work in a same way as for blog
Goffi <goffi@goffi.org>
parents:
2274
diff
changeset
|
1422 except IndexError: |
3028 | 1423 self.disp(_("Item has not payload"), 1) |
3275
55eeb0dfd313
jp (pubsub): fixed arguments returned when item has no payload
Goffi <goffi@goffi.org>
parents:
3137
diff
changeset
|
1424 return "", item_id |
2280
4bc9a2c2d6c9
jp (pubsub, common): fixed last item edition (keep item id instead of creating a new one)
Goffi <goffi@goffi.org>
parents:
2279
diff
changeset
|
1425 return etree.tostring(payload, encoding="unicode", pretty_print=True), item_id |
2275
64e99bf0dfa2
jp (pubsub/edit): new edit subcommand, which work in a same way as for blog
Goffi <goffi@goffi.org>
parents:
2274
diff
changeset
|
1426 |
3040 | 1427 async def start(self): |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1428 ( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1429 self.pubsub_service, |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1430 self.pubsub_node, |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1431 self.pubsub_item, |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1432 content_file_path, |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1433 content_file_obj, |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1434 ) = await self.getItemPath() |
3040 | 1435 await self.runEditor("pubsub_editor_args", content_file_path, content_file_obj) |
1436 self.host.quit() | |
2275
64e99bf0dfa2
jp (pubsub/edit): new edit subcommand, which work in a same way as for blog
Goffi <goffi@goffi.org>
parents:
2274
diff
changeset
|
1437 |
64e99bf0dfa2
jp (pubsub/edit): new edit subcommand, which work in a same way as for blog
Goffi <goffi@goffi.org>
parents:
2274
diff
changeset
|
1438 |
3521
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1439 class Rename(base.CommandBase): |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1440 def __init__(self, host): |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1441 base.CommandBase.__init__( |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1442 self, |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1443 host, |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1444 "rename", |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1445 use_pubsub=True, |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1446 pubsub_flags={C.NODE, C.SINGLE_ITEM}, |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1447 help=_("rename a pubsub item"), |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1448 ) |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1449 |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1450 def add_parser_options(self): |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1451 self.parser.add_argument("new_id", help=_("new item id to use")) |
3521
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1452 |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1453 async def start(self): |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1454 try: |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1455 await self.host.bridge.psItemRename( |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1456 self.args.service, |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1457 self.args.node, |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1458 self.args.item, |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1459 self.args.new_id, |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1460 self.profile, |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1461 ) |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1462 except Exception as e: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1463 self.disp(f"can't rename item: {e}", error=True) |
3521
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1464 self.host.quit(C.EXIT_BRIDGE_ERRBACK) |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1465 else: |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1466 self.disp("Item renamed") |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1467 self.host.quit(C.EXIT_OK) |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1468 |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1469 |
2353
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1470 class Subscribe(base.CommandBase): |
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1471 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1472 base.CommandBase.__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1473 self, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1474 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1475 "subscribe", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1476 use_pubsub=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1477 pubsub_flags={C.NODE}, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1478 use_verbose=True, |
3028 | 1479 help=_("subscribe to a node"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1480 ) |
2353
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1481 |
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1482 def add_parser_options(self): |
3758
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1483 self.parser.add_argument( |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1484 "--public", |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1485 action="store_true", |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1486 help=_("make the registration visible for everybody"), |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1487 ) |
2353
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1488 |
3040 | 1489 async def start(self): |
3758
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1490 options = {} |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1491 if self.args.public: |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1492 namespaces = await self.host.bridge.namespacesGet() |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1493 try: |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1494 ns_pps = namespaces["pps"] |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1495 except KeyError: |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1496 self.disp( |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1497 "Pubsub Public Subscription plugin is not loaded, can't use --public " |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1498 "option, subscription stopped", error=True |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1499 ) |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1500 self.host.quit(C.EXIT_MISSING_FEATURE) |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1501 else: |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1502 options[f"{{{ns_pps}}}public"] = True |
3040 | 1503 try: |
1504 sub_id = await self.host.bridge.psSubscribe( | |
1505 self.args.service, | |
1506 self.args.node, | |
3757
5bda9d2e8b35
plugin XEP-0060: use serialised options in `psSubscribe` + triggers update
Goffi <goffi@goffi.org>
parents:
3668
diff
changeset
|
1507 data_format.serialise(options), |
3040 | 1508 self.profile, |
1509 ) | |
1510 except Exception as e: | |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1511 self.disp(_("can't subscribe to node: {e}").format(e=e), error=True) |
3040 | 1512 self.host.quit(C.EXIT_BRIDGE_ERRBACK) |
1513 else: | |
1514 self.disp(_("subscription done"), 1) | |
1515 if sub_id: | |
1516 self.disp(_("subscription id: {sub_id}").format(sub_id=sub_id)) | |
1517 self.host.quit() | |
2353
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1518 |
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1519 |
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1520 class Unsubscribe(base.CommandBase): |
3040 | 1521 # FIXME: check why we get a a NodeNotFound on subscribe just after unsubscribe |
2353
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1522 |
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1523 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1524 base.CommandBase.__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1525 self, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1526 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1527 "unsubscribe", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1528 use_pubsub=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1529 pubsub_flags={C.NODE}, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1530 use_verbose=True, |
3028 | 1531 help=_("unsubscribe from a node"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1532 ) |
2353
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1533 |
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1534 def add_parser_options(self): |
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1535 pass |
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1536 |
3040 | 1537 async def start(self): |
1538 try: | |
1539 await self.host.bridge.psUnsubscribe( | |
1540 self.args.service, | |
1541 self.args.node, | |
1542 self.profile, | |
1543 ) | |
1544 except Exception as e: | |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1545 self.disp(_("can't unsubscribe from node: {e}").format(e=e), error=True) |
3040 | 1546 self.host.quit(C.EXIT_BRIDGE_ERRBACK) |
1547 else: | |
1548 self.disp(_("subscription removed"), 1) | |
1549 self.host.quit() | |
2353
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1550 |
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1551 |
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1552 class Subscriptions(base.CommandBase): |
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1553 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1554 base.CommandBase.__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1555 self, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1556 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1557 "subscriptions", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1558 use_output=C.OUTPUT_LIST_DICT, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1559 use_pubsub=True, |
3028 | 1560 help=_("retrieve all subscriptions on a service"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1561 ) |
2353
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1562 |
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1563 def add_parser_options(self): |
3758
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1564 self.parser.add_argument( |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1565 "--public", |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1566 action="store_true", |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1567 help=_("get public subscriptions"), |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1568 ) |
2353
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1569 |
3040 | 1570 async def start(self): |
3758
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1571 if self.args.public: |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1572 method = self.host.bridge.psPublicSubscriptionsGet |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1573 else: |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1574 method = self.host.bridge.psSubscriptionsGet |
3040 | 1575 try: |
3758
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1576 subscriptions = data_format.deserialise( |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1577 await method( |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1578 self.args.service, |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1579 self.args.node, |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1580 self.profile, |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1581 ), |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1582 type_check=list |
3040 | 1583 ) |
1584 except Exception as e: | |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1585 self.disp(_("can't retrieve subscriptions: {e}").format(e=e), error=True) |
3040 | 1586 self.host.quit(C.EXIT_BRIDGE_ERRBACK) |
1587 else: | |
1588 await self.output(subscriptions) | |
1589 self.host.quit() | |
2353
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1590 |
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1591 |
2235
4db836386641
jp: added use_pubsub and use_pubsub_node_req arguments to CommandBase
Goffi <goffi@goffi.org>
parents:
2224
diff
changeset
|
1592 class Affiliations(base.CommandBase): |
2204
afc703419186
jp (pubsub): added affiliations and node/affiliations/get:
Goffi <goffi@goffi.org>
parents:
2199
diff
changeset
|
1593 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1594 base.CommandBase.__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1595 self, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1596 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1597 "affiliations", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1598 use_output=C.OUTPUT_DICT, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1599 use_pubsub=True, |
3028 | 1600 help=_("retrieve all affiliations on a service"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1601 ) |
2204
afc703419186
jp (pubsub): added affiliations and node/affiliations/get:
Goffi <goffi@goffi.org>
parents:
2199
diff
changeset
|
1602 |
afc703419186
jp (pubsub): added affiliations and node/affiliations/get:
Goffi <goffi@goffi.org>
parents:
2199
diff
changeset
|
1603 def add_parser_options(self): |
2235
4db836386641
jp: added use_pubsub and use_pubsub_node_req arguments to CommandBase
Goffi <goffi@goffi.org>
parents:
2224
diff
changeset
|
1604 pass |
2204
afc703419186
jp (pubsub): added affiliations and node/affiliations/get:
Goffi <goffi@goffi.org>
parents:
2199
diff
changeset
|
1605 |
3040 | 1606 async def start(self): |
1607 try: | |
1608 affiliations = await self.host.bridge.psAffiliationsGet( | |
1609 self.args.service, | |
1610 self.args.node, | |
1611 self.profile, | |
1612 ) | |
1613 except Exception as e: | |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1614 self.disp(f"can't get node affiliations: {e}", error=True) |
3040 | 1615 self.host.quit(C.EXIT_BRIDGE_ERRBACK) |
1616 else: | |
1617 await self.output(affiliations) | |
1618 self.host.quit() | |
2204
afc703419186
jp (pubsub): added affiliations and node/affiliations/get:
Goffi <goffi@goffi.org>
parents:
2199
diff
changeset
|
1619 |
afc703419186
jp (pubsub): added affiliations and node/affiliations/get:
Goffi <goffi@goffi.org>
parents:
2199
diff
changeset
|
1620 |
3835
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1621 class Reference(base.CommandBase): |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1622 def __init__(self, host): |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1623 super().__init__( |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1624 host, |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1625 "reference", |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1626 use_pubsub=True, |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1627 pubsub_flags={C.NODE, C.SINGLE_ITEM}, |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1628 help=_("send a reference/mention to pubsub item"), |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1629 ) |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1630 |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1631 def add_parser_options(self): |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1632 self.parser.add_argument( |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1633 "-t", |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1634 "--type", |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1635 default="mention", |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1636 choices=("data", "mention"), |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1637 help=_("type of reference to send (DEFAULT: mention)"), |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1638 ) |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1639 self.parser.add_argument( |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1640 "recipient", |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1641 help=_("recipient of the reference") |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1642 ) |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1643 |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1644 async def start(self): |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1645 service = self.args.service or await self.host.get_profile_jid() |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1646 if self.args.item: |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1647 anchor = uri.buildXMPPUri( |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1648 "pubsub", path=service, node=self.args.node, item=self.args.item |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1649 ) |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1650 else: |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1651 anchor = uri.buildXMPPUri("pubsub", path=service, node=self.args.node) |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1652 |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1653 try: |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1654 await self.host.bridge.referenceSend( |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1655 self.args.recipient, |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1656 anchor, |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1657 self.args.type, |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1658 "", |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1659 self.profile, |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1660 ) |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1661 except Exception as e: |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1662 self.disp(f"can't send reference: {e}", error=True) |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1663 self.host.quit(C.EXIT_BRIDGE_ERRBACK) |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1664 else: |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1665 self.host.quit() |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1666 |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1667 |
2316 | 1668 class Search(base.CommandBase): |
3040 | 1669 """This command do a search without using MAM |
2764
92af49cde255
jp (base): MAM and RSM arguments can now be used for pubsub commands:
Goffi <goffi@goffi.org>
parents:
2761
diff
changeset
|
1670 |
92af49cde255
jp (base): MAM and RSM arguments can now be used for pubsub commands:
Goffi <goffi@goffi.org>
parents:
2761
diff
changeset
|
1671 This commands checks every items it finds by itself, |
92af49cde255
jp (base): MAM and RSM arguments can now be used for pubsub commands:
Goffi <goffi@goffi.org>
parents:
2761
diff
changeset
|
1672 so it may be heavy in resources both for server and client |
92af49cde255
jp (base): MAM and RSM arguments can now be used for pubsub commands:
Goffi <goffi@goffi.org>
parents:
2761
diff
changeset
|
1673 """ |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1674 |
2316 | 1675 RE_FLAGS = re.MULTILINE | re.UNICODE |
3028 | 1676 EXEC_ACTIONS = ("exec", "external") |
2316 | 1677 |
1678 def __init__(self, host): | |
2764
92af49cde255
jp (base): MAM and RSM arguments can now be used for pubsub commands:
Goffi <goffi@goffi.org>
parents:
2761
diff
changeset
|
1679 # FIXME: C.NO_MAX is not needed here, and this can be globally removed from consts |
92af49cde255
jp (base): MAM and RSM arguments can now be used for pubsub commands:
Goffi <goffi@goffi.org>
parents:
2761
diff
changeset
|
1680 # the only interest is to change the help string, but this can be explained |
92af49cde255
jp (base): MAM and RSM arguments can now be used for pubsub commands:
Goffi <goffi@goffi.org>
parents:
2761
diff
changeset
|
1681 # extensively in man pages (max is for each node found) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1682 base.CommandBase.__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1683 self, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1684 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1685 "search", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1686 use_output=C.OUTPUT_XML, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1687 use_pubsub=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1688 pubsub_flags={C.MULTI_ITEMS, C.NO_MAX}, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1689 use_verbose=True, |
3028 | 1690 help=_("search items corresponding to filters"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1691 ) |
2316 | 1692 |
1693 @property | |
1694 def etree(self): | |
1695 """load lxml.etree only if needed""" | |
1696 if self._etree is None: | |
1697 from lxml import etree | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1698 |
2316 | 1699 self._etree = etree |
1700 return self._etree | |
1701 | |
1702 def filter_opt(self, value, type_): | |
1703 return (type_, value) | |
1704 | |
1705 def filter_flag(self, value, type_): | |
1706 value = C.bool(value) | |
1707 return (type_, value) | |
1708 | |
1709 def add_parser_options(self): | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1710 self.parser.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1711 "-D", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1712 "--max-depth", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1713 type=int, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1714 default=0, |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1715 help=_( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1716 "maximum depth of recursion (will search linked nodes if > 0, " |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1717 "DEFAULT: 0)" |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1718 ), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1719 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1720 self.parser.add_argument( |
2764
92af49cde255
jp (base): MAM and RSM arguments can now be used for pubsub commands:
Goffi <goffi@goffi.org>
parents:
2761
diff
changeset
|
1721 "-M", |
92af49cde255
jp (base): MAM and RSM arguments can now be used for pubsub commands:
Goffi <goffi@goffi.org>
parents:
2761
diff
changeset
|
1722 "--node-max", |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1723 type=int, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1724 default=30, |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1725 help=_( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1726 "maximum number of items to get per node ({} to get all items, " |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1727 "DEFAULT: 30)".format(C.NO_LIMIT) |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1728 ), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1729 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1730 self.parser.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1731 "-N", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1732 "--namespace", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1733 action="append", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1734 nargs=2, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1735 default=[], |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1736 metavar="NAME NAMESPACE", |
3028 | 1737 help=_("namespace to use for xpath"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1738 ) |
2316 | 1739 |
1740 # filters | |
3028 | 1741 filter_text = partial(self.filter_opt, type_="text") |
1742 filter_re = partial(self.filter_opt, type_="regex") | |
1743 filter_xpath = partial(self.filter_opt, type_="xpath") | |
1744 filter_python = partial(self.filter_opt, type_="python") | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1745 filters = self.parser.add_argument_group( |
3028 | 1746 _("filters"), |
1747 _("only items corresponding to following filters will be kept"), | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1748 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1749 filters.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1750 "-t", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1751 "--text", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1752 action="append", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1753 dest="filters", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1754 type=filter_text, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1755 metavar="TEXT", |
3028 | 1756 help=_("full text filter, item must contain this string (XML included)"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1757 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1758 filters.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1759 "-r", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1760 "--regex", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1761 action="append", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1762 dest="filters", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1763 type=filter_re, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1764 metavar="EXPRESSION", |
3028 | 1765 help=_("like --text but using a regular expression"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1766 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1767 filters.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1768 "-x", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1769 "--xpath", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1770 action="append", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1771 dest="filters", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1772 type=filter_xpath, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1773 metavar="XPATH", |
3028 | 1774 help=_("filter items which has elements matching this xpath"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1775 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1776 filters.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1777 "-P", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1778 "--python", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1779 action="append", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1780 dest="filters", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1781 type=filter_python, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1782 metavar="PYTHON_CODE", |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1783 help=_( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1784 "Python expression which much return a bool (True to keep item, " |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1785 'False to reject it). "item" is raw text item, "item_xml" is ' |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1786 "lxml's etree.Element" |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1787 ), |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1788 ) |
2316 | 1789 |
1790 # filters flags | |
3028 | 1791 flag_case = partial(self.filter_flag, type_="ignore-case") |
1792 flag_invert = partial(self.filter_flag, type_="invert") | |
1793 flag_dotall = partial(self.filter_flag, type_="dotall") | |
1794 flag_matching = partial(self.filter_flag, type_="only-matching") | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1795 flags = self.parser.add_argument_group( |
3028 | 1796 _("filters flags"), |
1797 _("filters modifiers (change behaviour of following filters)"), | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1798 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1799 flags.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1800 "-C", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1801 "--ignore-case", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1802 action="append", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1803 dest="filters", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1804 type=flag_case, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1805 const=("ignore-case", True), |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1806 nargs="?", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1807 metavar="BOOLEAN", |
3028 | 1808 help=_("(don't) ignore case in following filters (DEFAULT: case sensitive)"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1809 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1810 flags.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1811 "-I", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1812 "--invert", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1813 action="append", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1814 dest="filters", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1815 type=flag_invert, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1816 const=("invert", True), |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1817 nargs="?", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1818 metavar="BOOLEAN", |
3028 | 1819 help=_("(don't) invert effect of following filters (DEFAULT: don't invert)"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1820 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1821 flags.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1822 "-A", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1823 "--dot-all", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1824 action="append", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1825 dest="filters", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1826 type=flag_dotall, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1827 const=("dotall", True), |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1828 nargs="?", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1829 metavar="BOOLEAN", |
3028 | 1830 help=_("(don't) use DOTALL option for regex (DEFAULT: don't use)"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1831 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1832 flags.add_argument( |
2764
92af49cde255
jp (base): MAM and RSM arguments can now be used for pubsub commands:
Goffi <goffi@goffi.org>
parents:
2761
diff
changeset
|
1833 "-k", |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1834 "--only-matching", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1835 action="append", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1836 dest="filters", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1837 type=flag_matching, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1838 const=("only-matching", True), |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1839 nargs="?", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1840 metavar="BOOLEAN", |
3028 | 1841 help=_("keep only the matching part of the item"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1842 ) |
2316 | 1843 |
1844 # action | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1845 self.parser.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1846 "action", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1847 default="print", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1848 nargs="?", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1849 choices=("print", "exec", "external"), |
3028 | 1850 help=_("action to do on found items (DEFAULT: print)"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1851 ) |
2316 | 1852 self.parser.add_argument("command", nargs=argparse.REMAINDER) |
1853 | |
3040 | 1854 async def getItems(self, depth, service, node, items): |
2316 | 1855 self.to_get += 1 |
3040 | 1856 try: |
3312
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1857 ps_result = data_format.deserialise( |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1858 await self.host.bridge.psItemsGet( |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1859 service, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1860 node, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1861 self.args.node_max, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1862 items, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1863 "", |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1864 self.getPubsubExtra(), |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1865 self.profile, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1866 ) |
3040 | 1867 ) |
1868 except Exception as e: | |
1869 self.disp( | |
1870 f"can't get pubsub items at {service} (node: {node}): {e}", | |
1871 error=True, | |
1872 ) | |
1873 self.to_get -= 1 | |
1874 else: | |
3312
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1875 await self.search(ps_result, depth) |
2316 | 1876 |
1877 def _checkPubsubURL(self, match, found_nodes): | |
1878 """check that the matched URL is an xmpp: one | |
1879 | |
1880 @param found_nodes(list[unicode]): found_nodes | |
1881 this list will be filled while xmpp: URIs are discovered | |
1882 """ | |
1883 url = match.group(0) | |
3028 | 1884 if url.startswith("xmpp"): |
2316 | 1885 try: |
1886 url_data = uri.parseXMPPUri(url) | |
1887 except ValueError: | |
1888 return | |
3028 | 1889 if url_data["type"] == "pubsub": |
1890 found_node = {"service": url_data["path"], "node": url_data["node"]} | |
1891 if "item" in url_data: | |
1892 found_node["item"] = url_data["item"] | |
2316 | 1893 found_nodes.append(found_node) |
1894 | |
3040 | 1895 async def getSubNodes(self, item, depth): |
2316 | 1896 """look for pubsub URIs in item, and getItems on the linked nodes""" |
1897 found_nodes = [] | |
1898 checkURI = partial(self._checkPubsubURL, found_nodes=found_nodes) | |
1899 strings.RE_URL.sub(checkURI, item) | |
1900 for data in found_nodes: | |
3040 | 1901 await self.getItems( |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1902 depth + 1, |
3028 | 1903 data["service"], |
1904 data["node"], | |
1905 [data["item"]] if "item" in data else [], | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1906 ) |
2316 | 1907 |
1908 def parseXml(self, item): | |
1909 try: | |
1910 return self.etree.fromstring(item) | |
1911 except self.etree.XMLSyntaxError: | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1912 self.disp( |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1913 _( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1914 "item doesn't looks like XML, you have probably used --only-matching " |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1915 "somewhere before and we have no more XML" |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1916 ), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1917 error=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1918 ) |
2316 | 1919 self.host.quit(C.EXIT_BAD_ARG) |
1920 | |
1921 def filter(self, item): | |
1922 """apply filters given on command line | |
1923 | |
1924 if only-matching is used, item may be modified | |
1925 @return (tuple[bool, unicode]): a tuple with: | |
1926 - keep: True if item passed the filters | |
1927 - item: it is returned in case of modifications | |
1928 """ | |
1929 ignore_case = False | |
1930 invert = False | |
1931 dotall = False | |
1932 only_matching = False | |
1933 item_xml = None | |
1934 for type_, value in self.args.filters: | |
1935 keep = True | |
1936 | |
1937 ## filters | |
1938 | |
3028 | 1939 if type_ == "text": |
2316 | 1940 if ignore_case: |
1941 if value.lower() not in item.lower(): | |
1942 keep = False | |
1943 else: | |
1944 if value not in item: | |
1945 keep = False | |
1946 if keep and only_matching: | |
1947 # doesn't really make sens to keep a fixed string | |
1948 # so we raise an error | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1949 self.host.disp( |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1950 _("--only-matching used with fixed --text string, are you sure?"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1951 error=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1952 ) |
2316 | 1953 self.host.quit(C.EXIT_BAD_ARG) |
3028 | 1954 elif type_ == "regex": |
2316 | 1955 flags = self.RE_FLAGS |
1956 if ignore_case: | |
1957 flags |= re.IGNORECASE | |
1958 if dotall: | |
1959 flags |= re.DOTALL | |
1960 match = re.search(value, item, flags) | |
1961 keep = match != None | |
1962 if keep and only_matching: | |
1963 item = match.group() | |
1964 item_xml = None | |
3028 | 1965 elif type_ == "xpath": |
2316 | 1966 if item_xml is None: |
1967 item_xml = self.parseXml(item) | |
1968 try: | |
1969 elts = item_xml.xpath(value, namespaces=self.args.namespace) | |
1970 except self.etree.XPathEvalError as e: | |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1971 self.disp(_("can't use xpath: {reason}").format(reason=e), error=True) |
2316 | 1972 self.host.quit(C.EXIT_BAD_ARG) |
1973 keep = bool(elts) | |
1974 if keep and only_matching: | |
1975 item_xml = elts[0] | |
1976 try: | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1977 item = self.etree.tostring(item_xml, encoding="unicode") |
2316 | 1978 except TypeError: |
1979 # we have a string only, not an element | |
3028 | 1980 item = str(item_xml) |
2316 | 1981 item_xml = None |
3028 | 1982 elif type_ == "python": |
2316 | 1983 if item_xml is None: |
1984 item_xml = self.parseXml(item) | |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1985 cmd_ns = {"etree": self.etree, "item": item, "item_xml": item_xml} |
2316 | 1986 try: |
1987 keep = eval(value, cmd_ns) | |
1988 except SyntaxError as e: | |
3028 | 1989 self.disp(str(e), error=True) |
2316 | 1990 self.host.quit(C.EXIT_BAD_ARG) |
1991 | |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1992 ## flags |
2316 | 1993 |
3028 | 1994 elif type_ == "ignore-case": |
2316 | 1995 ignore_case = value |
3028 | 1996 elif type_ == "invert": |
2316 | 1997 invert = value |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1998 # we need to continue, else loop would end here |
2316 | 1999 continue |
3028 | 2000 elif type_ == "dotall": |
2316 | 2001 dotall = value |
3028 | 2002 elif type_ == "only-matching": |
2316 | 2003 only_matching = value |
2004 else: | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2005 raise exceptions.InternalError( |
3028 | 2006 _("unknown filter type {type}").format(type=type_) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2007 ) |
2316 | 2008 |
2009 if invert: | |
2010 keep = not keep | |
2011 if not keep: | |
2012 return False, item | |
2013 | |
2014 return True, item | |
2015 | |
3040 | 2016 async def doItemAction(self, item, metadata): |
2316 | 2017 """called when item has been kepts and the action need to be done |
2018 | |
2019 @param item(unicode): accepted item | |
2020 """ | |
2021 action = self.args.action | |
3028 | 2022 if action == "print" or self.host.verbosity > 0: |
2316 | 2023 try: |
3040 | 2024 await self.output(item) |
2316 | 2025 except self.etree.XMLSyntaxError: |
2026 # item is not valid XML, but a string | |
2027 # can happen when --only-matching is used | |
2028 self.disp(item) | |
2029 if action in self.EXEC_ACTIONS: | |
2030 item_elt = self.parseXml(item) | |
3028 | 2031 if action == "exec": |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2032 use = { |
3028 | 2033 "service": metadata["service"], |
2034 "node": metadata["node"], | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2035 "item": item_elt.get("id"), |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2036 "profile": self.profile, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2037 } |
2317
f4e05600577b
jp (arg_tools): args is not modified anymore in get_use_args + fixed args returned + parser_args are returned separatly (return is now a tuple)
Goffi <goffi@goffi.org>
parents:
2316
diff
changeset
|
2038 # we need to send a copy of self.args.command |
f4e05600577b
jp (arg_tools): args is not modified anymore in get_use_args + fixed args returned + parser_args are returned separatly (return is now a tuple)
Goffi <goffi@goffi.org>
parents:
2316
diff
changeset
|
2039 # else it would be modified |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2040 parser_args, use_args = arg_tools.get_use_args( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2041 self.host, self.args.command, use, verbose=self.host.verbosity > 1 |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2042 ) |
2317
f4e05600577b
jp (arg_tools): args is not modified anymore in get_use_args + fixed args returned + parser_args are returned separatly (return is now a tuple)
Goffi <goffi@goffi.org>
parents:
2316
diff
changeset
|
2043 cmd_args = sys.argv[0:1] + parser_args + use_args |
2316 | 2044 else: |
2045 cmd_args = self.args.command | |
2046 | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2047 self.disp( |
3028 | 2048 "COMMAND: {command}".format( |
2049 command=" ".join([arg_tools.escape(a) for a in cmd_args]) | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2050 ), |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2051 2, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2052 ) |
3028 | 2053 if action == "exec": |
3040 | 2054 p = await asyncio.create_subprocess_exec(*cmd_args) |
2055 ret = await p.wait() | |
2316 | 2056 else: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2057 p = await asyncio.create_subprocess_exec(*cmd_args, stdin=subprocess.PIPE) |
3040 | 2058 await p.communicate(item.encode(sys.getfilesystemencoding())) |
2059 ret = p.returncode | |
2316 | 2060 if ret != 0: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2061 self.disp( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2062 A.color( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2063 C.A_FAILURE, |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2064 _("executed command failed with exit code {ret}").format(ret=ret), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2065 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2066 ) |
2316 | 2067 |
3312
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2068 async def search(self, ps_result, depth): |
2316 | 2069 """callback of getItems |
2070 | |
2071 this method filters items, get sub nodes if needed, | |
2072 do the requested action, and exit the command when everything is done | |
2073 @param items_data(tuple): result of getItems | |
2074 @param depth(int): current depth level | |
2075 0 for first node, 1 for first children, and so on | |
2076 """ | |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2077 for item in ps_result["items"]: |
2316 | 2078 if depth < self.args.max_depth: |
3040 | 2079 await self.getSubNodes(item, depth) |
2316 | 2080 keep, item = self.filter(item) |
2081 if not keep: | |
2082 continue | |
3312
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2083 await self.doItemAction(item, ps_result) |
2316 | 2084 |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2085 # we check if we got all getItems results |
2316 | 2086 self.to_get -= 1 |
2087 if self.to_get == 0: | |
2088 # yes, we can quit | |
2089 self.host.quit() | |
2090 assert self.to_get > 0 | |
2091 | |
3040 | 2092 async def start(self): |
2316 | 2093 if self.args.command: |
2094 if self.args.action not in self.EXEC_ACTIONS: | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2095 self.parser.error( |
3028 | 2096 _("Command can only be used with {actions} actions").format( |
2097 actions=", ".join(self.EXEC_ACTIONS) | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2098 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2099 ) |
2316 | 2100 else: |
2101 if self.args.action in self.EXEC_ACTIONS: | |
3028 | 2102 self.parser.error(_("you need to specify a command to execute")) |
2316 | 2103 if not self.args.node: |
2104 # TODO: handle get service affiliations when node is not set | |
3028 | 2105 self.parser.error(_("empty node is not handled yet")) |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2106 # to_get is increased on each get and decreased on each answer |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2107 # when it reach 0 again, the command is finished |
2316 | 2108 self.to_get = 0 |
2109 self._etree = None | |
2110 if self.args.filters is None: | |
2111 self.args.filters = [] | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2112 self.args.namespace = dict( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2113 self.args.namespace + [("pubsub", "http://jabber.org/protocol/pubsub")] |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2114 ) |
3040 | 2115 await self.getItems(0, self.args.service, self.args.node, self.args.items) |
2316 | 2116 |
2117 | |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2118 class Transform(base.CommandBase): |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2119 def __init__(self, host): |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2120 base.CommandBase.__init__( |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2121 self, |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2122 host, |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2123 "transform", |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2124 use_pubsub=True, |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2125 pubsub_flags={C.NODE, C.MULTI_ITEMS}, |
3028 | 2126 help=_("modify items of a node using an external command/script"), |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2127 ) |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2128 |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2129 def add_parser_options(self): |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2130 self.parser.add_argument( |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2131 "--apply", |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2132 action="store_true", |
3028 | 2133 help=_("apply transformation (DEFAULT: do a dry run)"), |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2134 ) |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2135 self.parser.add_argument( |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2136 "--admin", |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2137 action="store_true", |
3028 | 2138 help=_("do a pubsub admin request, needed to change publisher"), |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2139 ) |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2140 self.parser.add_argument( |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2141 "-I", |
3411
f30b238d9c45
jp: follow best practices and use a dash (`-`) instead of underscore (`_`) for long options.
Goffi <goffi@goffi.org>
parents:
3325
diff
changeset
|
2142 "--ignore-errors", |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2143 action="store_true", |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2144 help=_( |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2145 "if command return a non zero exit code, ignore the item and continue" |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2146 ), |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2147 ) |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2148 self.parser.add_argument( |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2149 "-A", |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2150 "--all", |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2151 action="store_true", |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2152 help=_("get all items by looping over all pages using RSM"), |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2153 ) |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2154 self.parser.add_argument( |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2155 "command_path", |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2156 help=_( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2157 "path to the command to use. Will be called repetitivly with an " |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2158 "item as input. Output (full item XML) will be used as new one. " |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2159 'Return "DELETE" string to delete the item, and "SKIP" to ignore it' |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2160 ), |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2161 ) |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2162 |
3040 | 2163 async def psItemsSendCb(self, item_ids, metadata): |
2803
d4a9a60bc650
jp (pubsub/transform): use new psItemsSend method, it is not needed anymore to send items one by one when --admin is not used
Goffi <goffi@goffi.org>
parents:
2802
diff
changeset
|
2164 if item_ids: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2165 self.disp( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2166 _("items published with ids {item_ids}").format( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2167 item_ids=", ".join(item_ids) |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2168 ) |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2169 ) |
2803
d4a9a60bc650
jp (pubsub/transform): use new psItemsSend method, it is not needed anymore to send items one by one when --admin is not used
Goffi <goffi@goffi.org>
parents:
2802
diff
changeset
|
2170 else: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2171 self.disp(_("items published")) |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2172 if self.args.all: |
3040 | 2173 return await self.handleNextPage(metadata) |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2174 else: |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2175 self.host.quit() |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2176 |
3040 | 2177 async def handleNextPage(self, metadata): |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2178 """Retrieve new page through RSM or quit if we're in the last page |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2179 |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2180 use to handle --all option |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2181 @param metadata(dict): metadata as returned by psItemsGet |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2182 """ |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2183 try: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2184 last = metadata["rsm"]["last"] |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2185 index = int(metadata["rsm"]["index"]) |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2186 count = int(metadata["rsm"]["count"]) |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2187 except KeyError: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2188 self.disp( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2189 _("Can't retrieve all items, RSM metadata not available"), error=True |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2190 ) |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2191 self.host.quit(C.EXIT_MISSING_FEATURE) |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2192 except ValueError as e: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2193 self.disp( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2194 _("Can't retrieve all items, bad RSM metadata: {msg}").format(msg=e), |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2195 error=True, |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2196 ) |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2197 self.host.quit(C.EXIT_ERROR) |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2198 |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2199 if index + self.args.rsm_max >= count: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2200 self.disp(_("All items transformed")) |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2201 self.host.quit(0) |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2202 |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2203 self.disp( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2204 _("Retrieving next page ({page_idx}/{page_total})").format( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2205 page_idx=int(index / self.args.rsm_max) + 1, |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2206 page_total=int(count / self.args.rsm_max), |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2207 ) |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2208 ) |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2209 |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2210 extra = self.getPubsubExtra() |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2211 extra["rsm_after"] = last |
3040 | 2212 try: |
3312
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2213 ps_result = await data_format.deserialise( |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2214 self.host.bridge.psItemsGet( |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2215 self.args.service, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2216 self.args.node, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2217 self.args.rsm_max, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2218 self.args.items, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2219 "", |
3586
5f65f4e9f8cb
plugin XEP-0060: getItems extra is now serialised dict
Goffi <goffi@goffi.org>
parents:
3568
diff
changeset
|
2220 data_format.serialise(extra), |
3312
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2221 self.profile, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2222 ) |
3040 | 2223 ) |
2224 except Exception as e: | |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2225 self.disp(f"can't retrieve items: {e}", error=True) |
3040 | 2226 self.host.quit(C.EXIT_BRIDGE_ERRBACK) |
2227 else: | |
2228 await self.psItemsGetCb(ps_result) | |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2229 |
3040 | 2230 async def psItemsGetCb(self, ps_result): |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2231 encoding = "utf-8" |
2803
d4a9a60bc650
jp (pubsub/transform): use new psItemsSend method, it is not needed anymore to send items one by one when --admin is not used
Goffi <goffi@goffi.org>
parents:
2802
diff
changeset
|
2232 new_items = [] |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2233 |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2234 for item in ps_result["items"]: |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2235 if self.check_duplicates: |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2236 # this is used when we are not ordering by creation |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2237 # to avoid infinite loop |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2238 item_elt, __ = xml_tools.etreeParse(self, item) |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2239 item_id = item_elt.get("id") |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2240 if item_id in self.items_ids: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2241 self.disp( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2242 _( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2243 "Duplicate found on item {item_id}, we have probably handled " |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2244 "all items." |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2245 ).format(item_id=item_id) |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2246 ) |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2247 self.host.quit() |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2248 self.items_ids.append(item_id) |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2249 |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2250 # we launch the command to filter the item |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2251 try: |
3040 | 2252 p = await asyncio.create_subprocess_exec( |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2253 self.args.command_path, stdin=subprocess.PIPE, stdout=subprocess.PIPE |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2254 ) |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2255 except OSError as e: |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2256 exit_code = C.EXIT_CMD_NOT_FOUND if e.errno == 2 else C.EXIT_ERROR |
3040 | 2257 self.disp(f"Can't execute the command: {e}", error=True) |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2258 self.host.quit(exit_code) |
3040 | 2259 encoding = "utf-8" |
2260 cmd_std_out, cmd_std_err = await p.communicate(item.encode(encoding)) | |
2261 ret = p.returncode | |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2262 if ret != 0: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2263 self.disp( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2264 f"The command returned a non zero status while parsing the " |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2265 f"following item:\n\n{item}", |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2266 error=True, |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2267 ) |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2268 if self.args.ignore_errors: |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2269 continue |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2270 else: |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2271 self.host.quit(C.EXIT_CMD_ERROR) |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2272 if cmd_std_err is not None: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2273 cmd_std_err = cmd_std_err.decode(encoding, errors="ignore") |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2274 self.disp(cmd_std_err, error=True) |
3040 | 2275 cmd_std_out = cmd_std_out.decode(encoding).strip() |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2276 if cmd_std_out == "DELETE": |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2277 item_elt, __ = xml_tools.etreeParse(self, item) |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2278 item_id = item_elt.get("id") |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2279 self.disp(_("Deleting item {item_id}").format(item_id=item_id)) |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2280 if self.args.apply: |
3040 | 2281 try: |
3467
5901a7170528
plugin XEP-0060: renamed `psRetractItem(s)` to `psItem(s)Retract` for consistency.
Goffi <goffi@goffi.org>
parents:
3453
diff
changeset
|
2282 await self.host.bridge.psItemRetract( |
3040 | 2283 self.args.service, |
2284 self.args.node, | |
2285 item_id, | |
2286 False, | |
2287 self.profile, | |
2288 ) | |
2289 except Exception as e: | |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2290 self.disp(f"can't delete item {item_id}: {e}", error=True) |
3040 | 2291 self.host.quit(C.EXIT_BRIDGE_ERRBACK) |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2292 continue |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2293 elif cmd_std_out == "SKIP": |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2294 item_elt, __ = xml_tools.etreeParse(self, item) |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2295 item_id = item_elt.get("id") |
3028 | 2296 self.disp(_("Skipping item {item_id}").format(item_id=item_id)) |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2297 continue |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2298 element, etree = xml_tools.etreeParse(self, cmd_std_out) |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2299 |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2300 # at this point command has been run and we have a etree.Element object |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2301 if element.tag not in ("item", "{http://jabber.org/protocol/pubsub}item"): |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2302 self.disp( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2303 "your script must return a whole item, this is not:\n{xml}".format( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2304 xml=etree.tostring(element, encoding="unicode") |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2305 ), |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2306 error=True, |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2307 ) |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2308 self.host.quit(C.EXIT_DATA_ERROR) |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2309 |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2310 if not self.args.apply: |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2311 # we have a dry run, we just display filtered items |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2312 serialised = etree.tostring( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2313 element, encoding="unicode", pretty_print=True |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2314 ) |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2315 self.disp(serialised) |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2316 else: |
2803
d4a9a60bc650
jp (pubsub/transform): use new psItemsSend method, it is not needed anymore to send items one by one when --admin is not used
Goffi <goffi@goffi.org>
parents:
2802
diff
changeset
|
2317 new_items.append(etree.tostring(element, encoding="unicode")) |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2318 |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2319 if not self.args.apply: |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2320 # on dry run we have nothing to wait for, we can quit |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2321 if self.args.all: |
3312
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2322 return await self.handleNextPage(ps_result) |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2323 self.host.quit() |
2803
d4a9a60bc650
jp (pubsub/transform): use new psItemsSend method, it is not needed anymore to send items one by one when --admin is not used
Goffi <goffi@goffi.org>
parents:
2802
diff
changeset
|
2324 else: |
d4a9a60bc650
jp (pubsub/transform): use new psItemsSend method, it is not needed anymore to send items one by one when --admin is not used
Goffi <goffi@goffi.org>
parents:
2802
diff
changeset
|
2325 if self.args.admin: |
3040 | 2326 bridge_method = self.host.bridge.psAdminItemsSend |
2327 else: | |
2328 bridge_method = self.host.bridge.psItemsSend | |
2329 | |
2330 try: | |
3312
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2331 ps_items_send_result = await bridge_method( |
2803
d4a9a60bc650
jp (pubsub/transform): use new psItemsSend method, it is not needed anymore to send items one by one when --admin is not used
Goffi <goffi@goffi.org>
parents:
2802
diff
changeset
|
2332 self.args.service, |
d4a9a60bc650
jp (pubsub/transform): use new psItemsSend method, it is not needed anymore to send items one by one when --admin is not used
Goffi <goffi@goffi.org>
parents:
2802
diff
changeset
|
2333 self.args.node, |
d4a9a60bc650
jp (pubsub/transform): use new psItemsSend method, it is not needed anymore to send items one by one when --admin is not used
Goffi <goffi@goffi.org>
parents:
2802
diff
changeset
|
2334 new_items, |
3028 | 2335 "", |
2803
d4a9a60bc650
jp (pubsub/transform): use new psItemsSend method, it is not needed anymore to send items one by one when --admin is not used
Goffi <goffi@goffi.org>
parents:
2802
diff
changeset
|
2336 self.profile, |
d4a9a60bc650
jp (pubsub/transform): use new psItemsSend method, it is not needed anymore to send items one by one when --admin is not used
Goffi <goffi@goffi.org>
parents:
2802
diff
changeset
|
2337 ) |
3040 | 2338 except Exception as e: |
2339 self.disp(f"can't send item: {e}", error=True) | |
2340 self.host.quit(C.EXIT_BRIDGE_ERRBACK) | |
2803
d4a9a60bc650
jp (pubsub/transform): use new psItemsSend method, it is not needed anymore to send items one by one when --admin is not used
Goffi <goffi@goffi.org>
parents:
2802
diff
changeset
|
2341 else: |
3312
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2342 await self.psItemsSendCb(ps_items_send_result, metadata=ps_result) |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2343 |
3040 | 2344 async def start(self): |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2345 if self.args.all and self.args.order_by != C.ORDER_BY_CREATION: |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2346 self.check_duplicates = True |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2347 self.items_ids = [] |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2348 self.disp( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2349 A.color( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2350 A.FG_RED, |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2351 A.BOLD, |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2352 '/!\\ "--all" should be used with "--order-by creation" /!\\\n', |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2353 A.RESET, |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2354 "We'll update items, so order may change during transformation,\n" |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2355 "we'll try to mitigate that by stopping on first duplicate,\n" |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2356 "but this method is not safe, and some items may be missed.\n---\n", |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2357 ) |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2358 ) |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2359 else: |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2360 self.check_duplicates = False |
3040 | 2361 |
2362 try: | |
3312
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2363 ps_result = data_format.deserialise( |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2364 await self.host.bridge.psItemsGet( |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2365 self.args.service, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2366 self.args.node, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2367 self.args.max, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2368 self.args.items, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2369 "", |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2370 self.getPubsubExtra(), |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2371 self.profile, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2372 ) |
3040 | 2373 ) |
2374 except Exception as e: | |
2375 self.disp(f"can't retrieve items: {e}", error=True) | |
2376 self.host.quit(C.EXIT_BRIDGE_ERRBACK) | |
2377 else: | |
2378 await self.psItemsGetCb(ps_result) | |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2379 |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2380 |
2235
4db836386641
jp: added use_pubsub and use_pubsub_node_req arguments to CommandBase
Goffi <goffi@goffi.org>
parents:
2224
diff
changeset
|
2381 class Uri(base.CommandBase): |
2224
87fcd4a7c7e4
jp (pubsub): added uri command to build pubsub URI
Goffi <goffi@goffi.org>
parents:
2221
diff
changeset
|
2382 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2383 base.CommandBase.__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2384 self, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2385 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2386 "uri", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2387 use_profile=False, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2388 use_pubsub=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2389 pubsub_flags={C.NODE, C.SINGLE_ITEM}, |
3028 | 2390 help=_("build URI"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2391 ) |
2224
87fcd4a7c7e4
jp (pubsub): added uri command to build pubsub URI
Goffi <goffi@goffi.org>
parents:
2221
diff
changeset
|
2392 |
87fcd4a7c7e4
jp (pubsub): added uri command to build pubsub URI
Goffi <goffi@goffi.org>
parents:
2221
diff
changeset
|
2393 def add_parser_options(self): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2394 self.parser.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2395 "-p", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2396 "--profile", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2397 default=C.PROF_KEY_DEFAULT, |
3028 | 2398 help=_("profile (used when no server is specified)"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2399 ) |
2224
87fcd4a7c7e4
jp (pubsub): added uri command to build pubsub URI
Goffi <goffi@goffi.org>
parents:
2221
diff
changeset
|
2400 |
87fcd4a7c7e4
jp (pubsub): added uri command to build pubsub URI
Goffi <goffi@goffi.org>
parents:
2221
diff
changeset
|
2401 def display_uri(self, jid_): |
2239
17502e74c046
jp (pubsub/uri): fixed URI generation
Goffi <goffi@goffi.org>
parents:
2235
diff
changeset
|
2402 uri_args = {} |
2224
87fcd4a7c7e4
jp (pubsub): added uri command to build pubsub URI
Goffi <goffi@goffi.org>
parents:
2221
diff
changeset
|
2403 if not self.args.service: |
87fcd4a7c7e4
jp (pubsub): added uri command to build pubsub URI
Goffi <goffi@goffi.org>
parents:
2221
diff
changeset
|
2404 self.args.service = jid.JID(jid_).bare |
87fcd4a7c7e4
jp (pubsub): added uri command to build pubsub URI
Goffi <goffi@goffi.org>
parents:
2221
diff
changeset
|
2405 |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2406 for key in ("node", "service", "item"): |
2224
87fcd4a7c7e4
jp (pubsub): added uri command to build pubsub URI
Goffi <goffi@goffi.org>
parents:
2221
diff
changeset
|
2407 value = getattr(self.args, key) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2408 if key == "service": |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2409 key = "path" |
2224
87fcd4a7c7e4
jp (pubsub): added uri command to build pubsub URI
Goffi <goffi@goffi.org>
parents:
2221
diff
changeset
|
2410 if value: |
87fcd4a7c7e4
jp (pubsub): added uri command to build pubsub URI
Goffi <goffi@goffi.org>
parents:
2221
diff
changeset
|
2411 uri_args[key] = value |
3028 | 2412 self.disp(uri.buildXMPPUri("pubsub", **uri_args)) |
2224
87fcd4a7c7e4
jp (pubsub): added uri command to build pubsub URI
Goffi <goffi@goffi.org>
parents:
2221
diff
changeset
|
2413 self.host.quit() |
87fcd4a7c7e4
jp (pubsub): added uri command to build pubsub URI
Goffi <goffi@goffi.org>
parents:
2221
diff
changeset
|
2414 |
3040 | 2415 async def start(self): |
2224
87fcd4a7c7e4
jp (pubsub): added uri command to build pubsub URI
Goffi <goffi@goffi.org>
parents:
2221
diff
changeset
|
2416 if not self.args.service: |
3040 | 2417 try: |
2418 jid_ = await self.host.bridge.asyncGetParamA( | |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2419 "JabberID", "Connection", profile_key=self.args.profile |
3040 | 2420 ) |
2421 except Exception as e: | |
2422 self.disp(f"can't retrieve jid: {e}", error=True) | |
2423 self.host.quit(C.EXIT_BRIDGE_ERRBACK) | |
2424 else: | |
2425 self.display_uri(jid_) | |
2224
87fcd4a7c7e4
jp (pubsub): added uri command to build pubsub URI
Goffi <goffi@goffi.org>
parents:
2221
diff
changeset
|
2426 else: |
87fcd4a7c7e4
jp (pubsub): added uri command to build pubsub URI
Goffi <goffi@goffi.org>
parents:
2221
diff
changeset
|
2427 self.display_uri(None) |
87fcd4a7c7e4
jp (pubsub): added uri command to build pubsub URI
Goffi <goffi@goffi.org>
parents:
2221
diff
changeset
|
2428 |
87fcd4a7c7e4
jp (pubsub): added uri command to build pubsub URI
Goffi <goffi@goffi.org>
parents:
2221
diff
changeset
|
2429 |
3866
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2430 class AttachmentGet(base.CommandBase): |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2431 def __init__(self, host): |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2432 super().__init__( |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2433 host, |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2434 "get", |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2435 use_output=C.OUTPUT_LIST_DICT, |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2436 use_pubsub=True, |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2437 pubsub_flags={C.SERVICE, C.NODE, C.SINGLE_ITEM}, |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2438 help=_("get data attached to an item"), |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2439 ) |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2440 |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2441 def add_parser_options(self): |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2442 self.parser.add_argument( |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2443 "-j", |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2444 "--jid", |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2445 action="append", |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2446 dest="jids", |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2447 help=_( |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2448 "get attached data published only by those JIDs (DEFAULT: get all " |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2449 "attached data)" |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2450 ) |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2451 ) |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2452 |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2453 async def start(self): |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2454 try: |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2455 attached_data, __ = await self.host.bridge.psAttachmentsGet( |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2456 self.args.service, |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2457 self.args.node, |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2458 self.args.item, |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2459 self.args.jids or [], |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2460 "", |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2461 self.profile, |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2462 ) |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2463 except Exception as e: |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2464 self.disp(f"can't get attached data: {e}", error=True) |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2465 self.host.quit(C.EXIT_BRIDGE_ERRBACK) |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2466 else: |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2467 attached_data = data_format.deserialise(attached_data, type_check=list) |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2468 await self.output(attached_data) |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2469 self.host.quit(C.EXIT_OK) |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2470 |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2471 |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2472 class AttachmentSet(base.CommandBase): |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2473 def __init__(self, host): |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2474 super().__init__( |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2475 host, |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2476 "set", |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2477 use_pubsub=True, |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2478 pubsub_flags={C.SERVICE, C.NODE, C.SINGLE_ITEM}, |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2479 help=_("attach data to an item"), |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2480 ) |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2481 |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2482 def add_parser_options(self): |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2483 self.parser.add_argument( |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2484 "--replace", |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2485 action="store_true", |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2486 help=_( |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2487 "replace previous versions of attachments (DEFAULT: update previous " |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2488 "version)" |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2489 ) |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2490 ) |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2491 self.parser.add_argument( |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2492 "-N", |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2493 "--noticed", |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2494 metavar="BOOLEAN", |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2495 nargs="?", |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2496 default="keep", |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2497 help=_("mark item as (un)noticed (DEFAULT: keep current value))") |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2498 ) |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2499 self.parser.add_argument( |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2500 "-r", |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2501 "--reactions", |
3889
1ab5fb468a41
cli (pubsub/attachment/set): update reactions handling:
Goffi <goffi@goffi.org>
parents:
3866
diff
changeset
|
2502 # FIXME: to be replaced by "extend" when we stop supporting python 3.7 |
3866
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2503 action="append", |
3889
1ab5fb468a41
cli (pubsub/attachment/set): update reactions handling:
Goffi <goffi@goffi.org>
parents:
3866
diff
changeset
|
2504 help=_("emojis to add to react to an item") |
1ab5fb468a41
cli (pubsub/attachment/set): update reactions handling:
Goffi <goffi@goffi.org>
parents:
3866
diff
changeset
|
2505 ) |
1ab5fb468a41
cli (pubsub/attachment/set): update reactions handling:
Goffi <goffi@goffi.org>
parents:
3866
diff
changeset
|
2506 self.parser.add_argument( |
1ab5fb468a41
cli (pubsub/attachment/set): update reactions handling:
Goffi <goffi@goffi.org>
parents:
3866
diff
changeset
|
2507 "-R", |
1ab5fb468a41
cli (pubsub/attachment/set): update reactions handling:
Goffi <goffi@goffi.org>
parents:
3866
diff
changeset
|
2508 "--reactions-remove", |
1ab5fb468a41
cli (pubsub/attachment/set): update reactions handling:
Goffi <goffi@goffi.org>
parents:
3866
diff
changeset
|
2509 # FIXME: to be replaced by "extend" when we stop supporting python 3.7 |
1ab5fb468a41
cli (pubsub/attachment/set): update reactions handling:
Goffi <goffi@goffi.org>
parents:
3866
diff
changeset
|
2510 action="append", |
1ab5fb468a41
cli (pubsub/attachment/set): update reactions handling:
Goffi <goffi@goffi.org>
parents:
3866
diff
changeset
|
2511 help=_("emojis to remove from reactions to an item") |
3866
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2512 ) |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2513 |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2514 async def start(self): |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2515 mb_data = { |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2516 "service": self.args.service, |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2517 "node": self.args.node, |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2518 "id": self.args.item, |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2519 "extra": {} |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2520 } |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2521 operation = "replace" if self.args.replace else "update" |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2522 if self.args.noticed != "keep": |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2523 if self.args.noticed is None: |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2524 self.args.noticed = C.BOOL_TRUE |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2525 mb_data["extra"]["noticed"] = C.bool(self.args.noticed) |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2526 |
3889
1ab5fb468a41
cli (pubsub/attachment/set): update reactions handling:
Goffi <goffi@goffi.org>
parents:
3866
diff
changeset
|
2527 if self.args.reactions or self.args.reactions_remove: |
1ab5fb468a41
cli (pubsub/attachment/set): update reactions handling:
Goffi <goffi@goffi.org>
parents:
3866
diff
changeset
|
2528 reactions = mb_data["extra"]["reactions"] = { |
1ab5fb468a41
cli (pubsub/attachment/set): update reactions handling:
Goffi <goffi@goffi.org>
parents:
3866
diff
changeset
|
2529 "operation": operation |
3866
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2530 } |
3889
1ab5fb468a41
cli (pubsub/attachment/set): update reactions handling:
Goffi <goffi@goffi.org>
parents:
3866
diff
changeset
|
2531 if self.args.replace: |
1ab5fb468a41
cli (pubsub/attachment/set): update reactions handling:
Goffi <goffi@goffi.org>
parents:
3866
diff
changeset
|
2532 reactions["reactions"] = self.args.reactions |
1ab5fb468a41
cli (pubsub/attachment/set): update reactions handling:
Goffi <goffi@goffi.org>
parents:
3866
diff
changeset
|
2533 else: |
1ab5fb468a41
cli (pubsub/attachment/set): update reactions handling:
Goffi <goffi@goffi.org>
parents:
3866
diff
changeset
|
2534 reactions["add"] = self.args.reactions |
1ab5fb468a41
cli (pubsub/attachment/set): update reactions handling:
Goffi <goffi@goffi.org>
parents:
3866
diff
changeset
|
2535 reactions["remove"] = self.args.reactions_remove |
1ab5fb468a41
cli (pubsub/attachment/set): update reactions handling:
Goffi <goffi@goffi.org>
parents:
3866
diff
changeset
|
2536 |
3866
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2537 |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2538 if not mb_data["extra"]: |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2539 self.parser.error(_("At leat one attachment must be specified.")) |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2540 |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2541 try: |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2542 await self.host.bridge.psAttachmentsSet( |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2543 data_format.serialise(mb_data), |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2544 self.profile, |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2545 ) |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2546 except Exception as e: |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2547 self.disp(f"can't attach data to item: {e}", error=True) |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2548 self.host.quit(C.EXIT_BRIDGE_ERRBACK) |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2549 else: |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2550 self.disp("data attached") |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2551 self.host.quit(C.EXIT_OK) |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2552 |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2553 |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2554 class Attachments(base.CommandBase): |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2555 subcommands = (AttachmentGet, AttachmentSet) |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2556 |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2557 def __init__(self, host): |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2558 super().__init__( |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2559 host, |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2560 "attachments", |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2561 use_profile=False, |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2562 help=_("set or retrieve items attachments"), |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2563 ) |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2564 |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2565 |
3939
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2566 class SecretShare(base.CommandBase): |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2567 def __init__(self, host): |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2568 super().__init__( |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2569 host, |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2570 "share", |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2571 use_pubsub=True, |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2572 pubsub_flags={C.NODE}, |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2573 help=_("share a secret to let other entity encrypt or decrypt items"), |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2574 ) |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2575 |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2576 def add_parser_options(self): |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2577 self.parser.add_argument( |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2578 "-k", "--key", metavar="ID", dest="secret_ids", action="append", default=[], |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2579 help=_( |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2580 "only share secrets with those IDs (default: share all secrets of the " |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2581 "node)" |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2582 ) |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2583 ) |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2584 self.parser.add_argument( |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2585 "recipient", metavar="JID", help=_("entity who must get the shared secret") |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2586 ) |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2587 |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2588 async def start(self): |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2589 try: |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2590 await self.host.bridge.psSecretShare( |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2591 self.args.recipient, |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2592 self.args.service, |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2593 self.args.node, |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2594 self.args.secret_ids, |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2595 self.profile, |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2596 ) |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2597 except Exception as e: |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2598 self.disp(f"can't share secret: {e}", error=True) |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2599 self.host.quit(C.EXIT_BRIDGE_ERRBACK) |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2600 else: |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2601 self.disp("secrets have been shared") |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2602 self.host.quit(C.EXIT_OK) |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2603 |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2604 |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2605 class SecretRevoke(base.CommandBase): |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2606 def __init__(self, host): |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2607 super().__init__( |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2608 host, |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2609 "revoke", |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2610 use_pubsub=True, |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2611 pubsub_flags={C.NODE}, |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2612 help=_("revoke an encrypted node secret"), |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2613 ) |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2614 |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2615 def add_parser_options(self): |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2616 self.parser.add_argument( |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2617 "secret_id", help=_("ID of the secrets to revoke") |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2618 ) |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2619 self.parser.add_argument( |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2620 "-r", "--recipient", dest="recipients", metavar="JID", action="append", |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2621 default=[], help=_( |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2622 "entity who must get the revocation notification (default: send to all " |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2623 "entities known to have the shared secret)" |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2624 ) |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2625 ) |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2626 |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2627 async def start(self): |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2628 try: |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2629 await self.host.bridge.psSecretRevoke( |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2630 self.args.service, |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2631 self.args.node, |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2632 self.args.secret_id, |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2633 self.args.recipients, |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2634 self.profile, |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2635 ) |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2636 except Exception as e: |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2637 self.disp(f"can't revoke secret: {e}", error=True) |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2638 self.host.quit(C.EXIT_BRIDGE_ERRBACK) |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2639 else: |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2640 self.disp("secret {self.args.secret_id} has been revoked.") |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2641 self.host.quit(C.EXIT_OK) |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2642 |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2643 |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2644 class SecretRotate(base.CommandBase): |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2645 def __init__(self, host): |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2646 super().__init__( |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2647 host, |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2648 "rotate", |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2649 use_pubsub=True, |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2650 pubsub_flags={C.NODE}, |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2651 help=_("revoke existing secrets, create a new one and send notifications"), |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2652 ) |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2653 |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2654 def add_parser_options(self): |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2655 self.parser.add_argument( |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2656 "-r", "--recipient", dest="recipients", metavar="JID", action="append", |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2657 default=[], help=_( |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2658 "entity who must get the revocation and shared secret notifications " |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2659 "(default: send to all entities known to have the shared secret)" |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2660 ) |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2661 ) |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2662 |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2663 async def start(self): |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2664 try: |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2665 await self.host.bridge.psSecretRotate( |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2666 self.args.service, |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2667 self.args.node, |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2668 self.args.recipients, |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2669 self.profile, |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2670 ) |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2671 except Exception as e: |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2672 self.disp(f"can't rotate secret: {e}", error=True) |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2673 self.host.quit(C.EXIT_BRIDGE_ERRBACK) |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2674 else: |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2675 self.disp("secret has been rotated") |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2676 self.host.quit(C.EXIT_OK) |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2677 |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2678 |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2679 class SecretList(base.CommandBase): |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2680 def __init__(self, host): |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2681 super().__init__( |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2682 host, |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2683 "list", |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2684 use_pubsub=True, |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2685 use_verbose=True, |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2686 pubsub_flags={C.NODE}, |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2687 help=_("list known secrets for a pubsub node"), |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2688 use_output=C.OUTPUT_LIST_DICT |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2689 ) |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2690 |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2691 def add_parser_options(self): |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2692 pass |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2693 |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2694 async def start(self): |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2695 try: |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2696 secrets = data_format.deserialise(await self.host.bridge.psSecretsList( |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2697 self.args.service, |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2698 self.args.node, |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2699 self.profile, |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2700 ), type_check=list) |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2701 except Exception as e: |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2702 self.disp(f"can't list node secrets: {e}", error=True) |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2703 self.host.quit(C.EXIT_BRIDGE_ERRBACK) |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2704 else: |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2705 if not self.verbosity: |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2706 # we don't print key if verbosity is not a least one, to avoid showing it |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2707 # on the screen accidentally |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2708 for secret in secrets: |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2709 del secret["key"] |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2710 await self.output(secrets) |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2711 self.host.quit(C.EXIT_OK) |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2712 |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2713 |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2714 class Secret(base.CommandBase): |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2715 subcommands = (SecretShare, SecretRevoke, SecretRotate, SecretList) |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2716 |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2717 def __init__(self, host): |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2718 super().__init__( |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2719 host, |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2720 "secret", |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2721 use_profile=False, |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2722 help=_("handle encrypted nodes secrets"), |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2723 ) |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2724 |
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2725 |
2308
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2726 class HookCreate(base.CommandBase): |
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2727 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2728 base.CommandBase.__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2729 self, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2730 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2731 "create", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2732 use_pubsub=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2733 pubsub_flags={C.NODE}, |
3028 | 2734 help=_("create a Pubsub hook"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2735 ) |
2308
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2736 |
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2737 def add_parser_options(self): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2738 self.parser.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2739 "-t", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2740 "--type", |
3028 | 2741 default="python", |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2742 choices=("python", "python_file", "python_code"), |
3028 | 2743 help=_("hook type"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2744 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2745 self.parser.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2746 "-P", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2747 "--persistent", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2748 action="store_true", |
3028 | 2749 help=_("make hook persistent across restarts"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2750 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2751 self.parser.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2752 "hook_arg", |
3028 | 2753 help=_("argument of the hook (depend of the type)"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2754 ) |
2308
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2755 |
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2756 @staticmethod |
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2757 def checkArgs(self): |
3028 | 2758 if self.args.type == "python_file": |
2308
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2759 self.args.hook_arg = os.path.abspath(self.args.hook_arg) |
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2760 if not os.path.isfile(self.args.hook_arg): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2761 self.parser.error( |
3028 | 2762 _("{path} is not a file").format(path=self.args.hook_arg) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2763 ) |
2308
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2764 |
3040 | 2765 async def start(self): |
2308
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2766 self.checkArgs(self) |
3040 | 2767 try: |
2768 await self.host.bridge.psHookAdd( | |
2769 self.args.service, | |
2770 self.args.node, | |
2771 self.args.type, | |
2772 self.args.hook_arg, | |
2773 self.args.persistent, | |
2774 self.profile, | |
2775 ) | |
2776 except Exception as e: | |
2777 self.disp(f"can't create hook: {e}", error=True) | |
2778 self.host.quit(C.EXIT_BRIDGE_ERRBACK) | |
2779 else: | |
2780 self.host.quit() | |
2308
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2781 |
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2782 |
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2783 class HookDelete(base.CommandBase): |
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2784 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2785 base.CommandBase.__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2786 self, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2787 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2788 "delete", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2789 use_pubsub=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2790 pubsub_flags={C.NODE}, |
3028 | 2791 help=_("delete a Pubsub hook"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2792 ) |
2308
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2793 |
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2794 def add_parser_options(self): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2795 self.parser.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2796 "-t", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2797 "--type", |
3028 | 2798 default="", |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2799 choices=("", "python", "python_file", "python_code"), |
3028 | 2800 help=_("hook type to remove, empty to remove all (DEFAULT: remove all)"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2801 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2802 self.parser.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2803 "-a", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2804 "--arg", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2805 dest="hook_arg", |
3028 | 2806 default="", |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2807 help=_( |
3028 | 2808 "argument of the hook to remove, empty to remove all (DEFAULT: remove all)" |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2809 ), |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2810 ) |
2308
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2811 |
3040 | 2812 async def start(self): |
2308
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2813 HookCreate.checkArgs(self) |
3040 | 2814 try: |
2815 nb_deleted = await self.host.bridge.psHookRemove( | |
2816 self.args.service, | |
2817 self.args.node, | |
2818 self.args.type, | |
2819 self.args.hook_arg, | |
2820 self.profile, | |
2821 ) | |
2822 except Exception as e: | |
2823 self.disp(f"can't delete hook: {e}", error=True) | |
2824 self.host.quit(C.EXIT_BRIDGE_ERRBACK) | |
2825 else: | |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2826 self.disp( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2827 _("{nb_deleted} hook(s) have been deleted").format(nb_deleted=nb_deleted) |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2828 ) |
3040 | 2829 self.host.quit() |
2308
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2830 |
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2831 |
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2832 class HookList(base.CommandBase): |
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2833 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2834 base.CommandBase.__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2835 self, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2836 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2837 "list", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2838 use_output=C.OUTPUT_LIST_DICT, |
3028 | 2839 help=_("list hooks of a profile"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2840 ) |
2308
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2841 |
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2842 def add_parser_options(self): |
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2843 pass |
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2844 |
3040 | 2845 async def start(self): |
2846 try: | |
2847 data = await self.host.bridge.psHookList( | |
2848 self.profile, | |
2849 ) | |
2850 except Exception as e: | |
2851 self.disp(f"can't list hooks: {e}", error=True) | |
2852 self.host.quit(C.EXIT_BRIDGE_ERRBACK) | |
2853 else: | |
2854 if not data: | |
2855 self.disp(_("No hook found.")) | |
2856 await self.output(data) | |
2857 self.host.quit() | |
2308
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2858 |
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2859 |
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2860 class Hook(base.CommandBase): |
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2861 subcommands = (HookCreate, HookDelete, HookList) |
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2862 |
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2863 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2864 super(Hook, self).__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2865 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2866 "hook", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2867 use_profile=False, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2868 use_verbose=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2869 help=_("trigger action on Pubsub notifications"), |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2870 ) |
2308
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2871 |
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2872 |
2191
a1a8233f89e8
jp(pubsub/get): pubsub/get command, first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
2873 class Pubsub(base.CommandBase): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2874 subcommands = ( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2875 Set, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2876 Get, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2877 Delete, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2878 Edit, |
3521
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
2879 Rename, |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2880 Subscribe, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2881 Unsubscribe, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2882 Subscriptions, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2883 Affiliations, |
3835
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
2884 Reference, |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2885 Search, |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2886 Transform, |
3866
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2887 Attachments, |
3939
8ae3e870be94
cli (pubsub): new `secret` subcommands:
Goffi <goffi@goffi.org>
parents:
3938
diff
changeset
|
2888 Secret, |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2889 Hook, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2890 Uri, |
3602
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
2891 Node, |
7241ce3b79dd
jp (pubsub): new `cache` subcommand with commands to `get`, `sync`, `purge` and `reset` pubsub cache
Goffi <goffi@goffi.org>
parents:
3601
diff
changeset
|
2892 Cache, |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2893 ) |
2191
a1a8233f89e8
jp(pubsub/get): pubsub/get command, first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
2894 |
a1a8233f89e8
jp(pubsub/get): pubsub/get command, first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
2895 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2896 super(Pubsub, self).__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2897 host, "pubsub", use_profile=False, help=_("PubSub nodes/items management") |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2898 ) |