Mercurial > libervia-backend
annotate sat_frontends/jp/cmd_pubsub.py @ 3900:6c93a18b6250
plugin XEP-0050: use coroutine + minor code readability improvments:
rel 372
author | Goffi <goffi@goffi.org> |
---|---|
date | Wed, 21 Sep 2022 22:33:59 +0200 |
parents | 1ab5fb468a41 |
children | 6939594ba77e |
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 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1284 # 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
|
1285 |
3040 | 1286 async def start(self): |
1287 try: | |
3312
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1288 ps_result = data_format.deserialise( |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1289 await self.host.bridge.psItemsGet( |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1290 self.args.service, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1291 self.args.node, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1292 self.args.max, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1293 self.args.items, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1294 self.args.sub_id, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1295 self.getPubsubExtra(), |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1296 self.profile, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1297 ) |
3040 | 1298 ) |
3413
f4d417593e77
jp (pubsub/node/info, pubsub/get): better exit code:
Goffi <goffi@goffi.org>
parents:
3412
diff
changeset
|
1299 except BridgeException as e: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1300 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
|
1301 self.disp( |
f4d417593e77
jp (pubsub/node/info, pubsub/get): better exit code:
Goffi <goffi@goffi.org>
parents:
3412
diff
changeset
|
1302 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
|
1303 error=True, |
3413
f4d417593e77
jp (pubsub/node/info, pubsub/get): better exit code:
Goffi <goffi@goffi.org>
parents:
3412
diff
changeset
|
1304 ) |
f4d417593e77
jp (pubsub/node/info, pubsub/get): better exit code:
Goffi <goffi@goffi.org>
parents:
3412
diff
changeset
|
1305 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
|
1306 else: |
f4d417593e77
jp (pubsub/node/info, pubsub/get): better exit code:
Goffi <goffi@goffi.org>
parents:
3412
diff
changeset
|
1307 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
|
1308 self.host.quit(C.EXIT_BRIDGE_ERRBACK) |
3040 | 1309 except Exception as e: |
3413
f4d417593e77
jp (pubsub/node/info, pubsub/get): better exit code:
Goffi <goffi@goffi.org>
parents:
3412
diff
changeset
|
1310 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
|
1311 self.host.quit(C.EXIT_INTERNAL_ERROR) |
3040 | 1312 else: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1313 await self.output(ps_result["items"]) |
3040 | 1314 self.host.quit(C.EXIT_OK) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1315 |
2191
a1a8233f89e8
jp(pubsub/get): pubsub/get command, first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
1316 |
2281
4af1805cc6df
jp (pubsub/delete): delete command implementation (to delete an item)
Goffi <goffi@goffi.org>
parents:
2280
diff
changeset
|
1317 class Delete(base.CommandBase): |
4af1805cc6df
jp (pubsub/delete): delete command implementation (to delete an item)
Goffi <goffi@goffi.org>
parents:
2280
diff
changeset
|
1318 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1319 base.CommandBase.__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1320 self, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1321 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1322 "delete", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1323 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
|
1324 pubsub_flags={C.NODE, C.ITEM, C.SINGLE_ITEM}, |
3028 | 1325 help=_("delete an item"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1326 ) |
2281
4af1805cc6df
jp (pubsub/delete): delete command implementation (to delete an item)
Goffi <goffi@goffi.org>
parents:
2280
diff
changeset
|
1327 |
4af1805cc6df
jp (pubsub/delete): delete command implementation (to delete an item)
Goffi <goffi@goffi.org>
parents:
2280
diff
changeset
|
1328 def add_parser_options(self): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1329 self.parser.add_argument( |
3028 | 1330 "-f", "--force", action="store_true", help=_("delete without confirmation") |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1331 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1332 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
|
1333 "--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
|
1334 help=_("do not send notification (not recommended)") |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1335 ) |
2281
4af1805cc6df
jp (pubsub/delete): delete command implementation (to delete an item)
Goffi <goffi@goffi.org>
parents:
2280
diff
changeset
|
1336 |
3040 | 1337 async def start(self): |
2281
4af1805cc6df
jp (pubsub/delete): delete command implementation (to delete an item)
Goffi <goffi@goffi.org>
parents:
2280
diff
changeset
|
1338 if not self.args.item: |
3028 | 1339 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
|
1340 if not self.args.force: |
3028 | 1341 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
|
1342 item_id=self.args.item |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1343 ) |
3040 | 1344 await self.host.confirmOrQuit(message, _("item deletion cancelled")) |
1345 try: | |
3467
5901a7170528
plugin XEP-0060: renamed `psRetractItem(s)` to `psItem(s)Retract` for consistency.
Goffi <goffi@goffi.org>
parents:
3453
diff
changeset
|
1346 await self.host.bridge.psItemRetract( |
3040 | 1347 self.args.service, |
1348 self.args.node, | |
1349 self.args.item, | |
1350 self.args.notify, | |
1351 self.profile, | |
1352 ) | |
1353 except Exception as e: | |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1354 self.disp(_("can't delete item: {e}").format(e=e), error=True) |
3040 | 1355 self.host.quit(C.EXIT_BRIDGE_ERRBACK) |
1356 else: | |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1357 self.disp(_("item {item} has been deleted").format(item=self.args.item)) |
3040 | 1358 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
|
1359 |
2191
a1a8233f89e8
jp(pubsub/get): pubsub/get command, first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
1360 |
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
|
1361 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
|
1362 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1363 base.CommandBase.__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1364 self, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1365 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1366 "edit", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1367 use_verbose=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1368 use_pubsub=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1369 pubsub_flags={C.NODE, C.SINGLE_ITEM}, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1370 use_draft=True, |
3028 | 1371 help=_("edit an existing or new pubsub item"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1372 ) |
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
|
1373 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
|
1374 |
64e99bf0dfa2
jp (pubsub/edit): new edit subcommand, which work in a same way as for blog
Goffi <goffi@goffi.org>
parents:
2274
diff
changeset
|
1375 def add_parser_options(self): |
2532 | 1376 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
|
1377 |
3040 | 1378 async def publish(self, content): |
1379 published_id = await self.host.bridge.psItemSend( | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1380 self.pubsub_service, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1381 self.pubsub_node, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1382 content, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1383 self.pubsub_item or "", |
3100
cea52c9ddfd9
plugin XEP-0060, jp (pubsub/set): publish-options implementation:
Goffi <goffi@goffi.org>
parents:
3040
diff
changeset
|
1384 "", |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1385 self.profile, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1386 ) |
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
|
1387 if published_id: |
3028 | 1388 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
|
1389 else: |
3028 | 1390 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
|
1391 |
3040 | 1392 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
|
1393 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
|
1394 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
|
1395 except ImportError: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1396 self.disp( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1397 "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
|
1398 'with "pip install lxml"', |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1399 error=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1400 ) |
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 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
|
1402 items = [item] if item else [] |
3312
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1403 ps_result = data_format.deserialise( |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1404 await self.host.bridge.psItemsGet( |
3586
5f65f4e9f8cb
plugin XEP-0060: getItems extra is now serialised dict
Goffi <goffi@goffi.org>
parents:
3568
diff
changeset
|
1405 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
|
1406 ) |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1407 ) |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1408 item_raw = ps_result["items"][0] |
3040 | 1409 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
|
1410 item_elt = etree.fromstring(item_raw, parser) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1411 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
|
1412 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
|
1413 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
|
1414 except IndexError: |
3028 | 1415 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
|
1416 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
|
1417 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
|
1418 |
3040 | 1419 async def start(self): |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1420 ( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1421 self.pubsub_service, |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1422 self.pubsub_node, |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1423 self.pubsub_item, |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1424 content_file_path, |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1425 content_file_obj, |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1426 ) = await self.getItemPath() |
3040 | 1427 await self.runEditor("pubsub_editor_args", content_file_path, content_file_obj) |
1428 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
|
1429 |
64e99bf0dfa2
jp (pubsub/edit): new edit subcommand, which work in a same way as for blog
Goffi <goffi@goffi.org>
parents:
2274
diff
changeset
|
1430 |
3521
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1431 class Rename(base.CommandBase): |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1432 def __init__(self, host): |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1433 base.CommandBase.__init__( |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1434 self, |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1435 host, |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1436 "rename", |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1437 use_pubsub=True, |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1438 pubsub_flags={C.NODE, C.SINGLE_ITEM}, |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1439 help=_("rename a pubsub item"), |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1440 ) |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1441 |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1442 def add_parser_options(self): |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1443 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
|
1444 |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1445 async def start(self): |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1446 try: |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1447 await self.host.bridge.psItemRename( |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1448 self.args.service, |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1449 self.args.node, |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1450 self.args.item, |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1451 self.args.new_id, |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1452 self.profile, |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1453 ) |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1454 except Exception as e: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1455 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
|
1456 self.host.quit(C.EXIT_BRIDGE_ERRBACK) |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1457 else: |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1458 self.disp("Item renamed") |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1459 self.host.quit(C.EXIT_OK) |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1460 |
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
1461 |
2353
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1462 class Subscribe(base.CommandBase): |
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1463 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1464 base.CommandBase.__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1465 self, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1466 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1467 "subscribe", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1468 use_pubsub=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1469 pubsub_flags={C.NODE}, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1470 use_verbose=True, |
3028 | 1471 help=_("subscribe to a node"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1472 ) |
2353
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1473 |
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1474 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
|
1475 self.parser.add_argument( |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1476 "--public", |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1477 action="store_true", |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1478 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
|
1479 ) |
2353
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1480 |
3040 | 1481 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
|
1482 options = {} |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1483 if self.args.public: |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1484 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
|
1485 try: |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1486 ns_pps = namespaces["pps"] |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1487 except KeyError: |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1488 self.disp( |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1489 "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
|
1490 "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
|
1491 ) |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1492 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
|
1493 else: |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1494 options[f"{{{ns_pps}}}public"] = True |
3040 | 1495 try: |
1496 sub_id = await self.host.bridge.psSubscribe( | |
1497 self.args.service, | |
1498 self.args.node, | |
3757
5bda9d2e8b35
plugin XEP-0060: use serialised options in `psSubscribe` + triggers update
Goffi <goffi@goffi.org>
parents:
3668
diff
changeset
|
1499 data_format.serialise(options), |
3040 | 1500 self.profile, |
1501 ) | |
1502 except Exception as e: | |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1503 self.disp(_("can't subscribe to node: {e}").format(e=e), error=True) |
3040 | 1504 self.host.quit(C.EXIT_BRIDGE_ERRBACK) |
1505 else: | |
1506 self.disp(_("subscription done"), 1) | |
1507 if sub_id: | |
1508 self.disp(_("subscription id: {sub_id}").format(sub_id=sub_id)) | |
1509 self.host.quit() | |
2353
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1510 |
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1511 |
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1512 class Unsubscribe(base.CommandBase): |
3040 | 1513 # 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
|
1514 |
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1515 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1516 base.CommandBase.__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1517 self, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1518 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1519 "unsubscribe", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1520 use_pubsub=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1521 pubsub_flags={C.NODE}, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1522 use_verbose=True, |
3028 | 1523 help=_("unsubscribe from a node"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1524 ) |
2353
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1525 |
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1526 def add_parser_options(self): |
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1527 pass |
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1528 |
3040 | 1529 async def start(self): |
1530 try: | |
1531 await self.host.bridge.psUnsubscribe( | |
1532 self.args.service, | |
1533 self.args.node, | |
1534 self.profile, | |
1535 ) | |
1536 except Exception as e: | |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1537 self.disp(_("can't unsubscribe from node: {e}").format(e=e), error=True) |
3040 | 1538 self.host.quit(C.EXIT_BRIDGE_ERRBACK) |
1539 else: | |
1540 self.disp(_("subscription removed"), 1) | |
1541 self.host.quit() | |
2353
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1542 |
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1543 |
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1544 class Subscriptions(base.CommandBase): |
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1545 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1546 base.CommandBase.__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1547 self, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1548 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1549 "subscriptions", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1550 use_output=C.OUTPUT_LIST_DICT, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1551 use_pubsub=True, |
3028 | 1552 help=_("retrieve all subscriptions on a service"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1553 ) |
2353
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1554 |
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1555 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
|
1556 self.parser.add_argument( |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1557 "--public", |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1558 action="store_true", |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1559 help=_("get public subscriptions"), |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1560 ) |
2353
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1561 |
3040 | 1562 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
|
1563 if self.args.public: |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1564 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
|
1565 else: |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1566 method = self.host.bridge.psSubscriptionsGet |
3040 | 1567 try: |
3758
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1568 subscriptions = data_format.deserialise( |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1569 await method( |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1570 self.args.service, |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1571 self.args.node, |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1572 self.profile, |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1573 ), |
b7cef1b24f83
plugins XEP-0060, XEP-0376, XEP-0465, CLI: PAM + PSS implementation:
Goffi <goffi@goffi.org>
parents:
3757
diff
changeset
|
1574 type_check=list |
3040 | 1575 ) |
1576 except Exception as e: | |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1577 self.disp(_("can't retrieve subscriptions: {e}").format(e=e), error=True) |
3040 | 1578 self.host.quit(C.EXIT_BRIDGE_ERRBACK) |
1579 else: | |
1580 await self.output(subscriptions) | |
1581 self.host.quit() | |
2353
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1582 |
ebc0dfe9c0ca
jp (pubsub): added subscribe, unsubscribe and subscriptions methods:
Goffi <goffi@goffi.org>
parents:
2351
diff
changeset
|
1583 |
2235
4db836386641
jp: added use_pubsub and use_pubsub_node_req arguments to CommandBase
Goffi <goffi@goffi.org>
parents:
2224
diff
changeset
|
1584 class Affiliations(base.CommandBase): |
2204
afc703419186
jp (pubsub): added affiliations and node/affiliations/get:
Goffi <goffi@goffi.org>
parents:
2199
diff
changeset
|
1585 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1586 base.CommandBase.__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1587 self, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1588 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1589 "affiliations", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1590 use_output=C.OUTPUT_DICT, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1591 use_pubsub=True, |
3028 | 1592 help=_("retrieve all affiliations on a service"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1593 ) |
2204
afc703419186
jp (pubsub): added affiliations and node/affiliations/get:
Goffi <goffi@goffi.org>
parents:
2199
diff
changeset
|
1594 |
afc703419186
jp (pubsub): added affiliations and node/affiliations/get:
Goffi <goffi@goffi.org>
parents:
2199
diff
changeset
|
1595 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
|
1596 pass |
2204
afc703419186
jp (pubsub): added affiliations and node/affiliations/get:
Goffi <goffi@goffi.org>
parents:
2199
diff
changeset
|
1597 |
3040 | 1598 async def start(self): |
1599 try: | |
1600 affiliations = await self.host.bridge.psAffiliationsGet( | |
1601 self.args.service, | |
1602 self.args.node, | |
1603 self.profile, | |
1604 ) | |
1605 except Exception as e: | |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1606 self.disp(f"can't get node affiliations: {e}", error=True) |
3040 | 1607 self.host.quit(C.EXIT_BRIDGE_ERRBACK) |
1608 else: | |
1609 await self.output(affiliations) | |
1610 self.host.quit() | |
2204
afc703419186
jp (pubsub): added affiliations and node/affiliations/get:
Goffi <goffi@goffi.org>
parents:
2199
diff
changeset
|
1611 |
afc703419186
jp (pubsub): added affiliations and node/affiliations/get:
Goffi <goffi@goffi.org>
parents:
2199
diff
changeset
|
1612 |
3835
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1613 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
|
1614 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
|
1615 super().__init__( |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1616 host, |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1617 "reference", |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1618 use_pubsub=True, |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1619 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
|
1620 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
|
1621 ) |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1622 |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1623 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
|
1624 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
|
1625 "-t", |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1626 "--type", |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1627 default="mention", |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1628 choices=("data", "mention"), |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1629 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
|
1630 ) |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1631 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
|
1632 "recipient", |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1633 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
|
1634 ) |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1635 |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1636 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
|
1637 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
|
1638 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
|
1639 anchor = uri.buildXMPPUri( |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1640 "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
|
1641 ) |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1642 else: |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1643 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
|
1644 |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1645 try: |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1646 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
|
1647 self.args.recipient, |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1648 anchor, |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1649 self.args.type, |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1650 "", |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1651 self.profile, |
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 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
|
1654 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
|
1655 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
|
1656 else: |
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
1657 self.host.quit() |
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 |
2316 | 1660 class Search(base.CommandBase): |
3040 | 1661 """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
|
1662 |
92af49cde255
jp (base): MAM and RSM arguments can now be used for pubsub commands:
Goffi <goffi@goffi.org>
parents:
2761
diff
changeset
|
1663 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
|
1664 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
|
1665 """ |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1666 |
2316 | 1667 RE_FLAGS = re.MULTILINE | re.UNICODE |
3028 | 1668 EXEC_ACTIONS = ("exec", "external") |
2316 | 1669 |
1670 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
|
1671 # 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
|
1672 # 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
|
1673 # 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
|
1674 base.CommandBase.__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1675 self, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1676 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1677 "search", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1678 use_output=C.OUTPUT_XML, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1679 use_pubsub=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1680 pubsub_flags={C.MULTI_ITEMS, C.NO_MAX}, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1681 use_verbose=True, |
3028 | 1682 help=_("search items corresponding to filters"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1683 ) |
2316 | 1684 |
1685 @property | |
1686 def etree(self): | |
1687 """load lxml.etree only if needed""" | |
1688 if self._etree is None: | |
1689 from lxml import etree | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1690 |
2316 | 1691 self._etree = etree |
1692 return self._etree | |
1693 | |
1694 def filter_opt(self, value, type_): | |
1695 return (type_, value) | |
1696 | |
1697 def filter_flag(self, value, type_): | |
1698 value = C.bool(value) | |
1699 return (type_, value) | |
1700 | |
1701 def add_parser_options(self): | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1702 self.parser.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1703 "-D", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1704 "--max-depth", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1705 type=int, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1706 default=0, |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1707 help=_( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1708 "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
|
1709 "DEFAULT: 0)" |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1710 ), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1711 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1712 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
|
1713 "-M", |
92af49cde255
jp (base): MAM and RSM arguments can now be used for pubsub commands:
Goffi <goffi@goffi.org>
parents:
2761
diff
changeset
|
1714 "--node-max", |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1715 type=int, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1716 default=30, |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1717 help=_( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1718 "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
|
1719 "DEFAULT: 30)".format(C.NO_LIMIT) |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1720 ), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1721 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1722 self.parser.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1723 "-N", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1724 "--namespace", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1725 action="append", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1726 nargs=2, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1727 default=[], |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1728 metavar="NAME NAMESPACE", |
3028 | 1729 help=_("namespace to use for xpath"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1730 ) |
2316 | 1731 |
1732 # filters | |
3028 | 1733 filter_text = partial(self.filter_opt, type_="text") |
1734 filter_re = partial(self.filter_opt, type_="regex") | |
1735 filter_xpath = partial(self.filter_opt, type_="xpath") | |
1736 filter_python = partial(self.filter_opt, type_="python") | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1737 filters = self.parser.add_argument_group( |
3028 | 1738 _("filters"), |
1739 _("only items corresponding to following filters will be kept"), | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1740 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1741 filters.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1742 "-t", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1743 "--text", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1744 action="append", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1745 dest="filters", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1746 type=filter_text, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1747 metavar="TEXT", |
3028 | 1748 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
|
1749 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1750 filters.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1751 "-r", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1752 "--regex", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1753 action="append", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1754 dest="filters", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1755 type=filter_re, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1756 metavar="EXPRESSION", |
3028 | 1757 help=_("like --text but using a regular expression"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1758 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1759 filters.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1760 "-x", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1761 "--xpath", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1762 action="append", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1763 dest="filters", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1764 type=filter_xpath, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1765 metavar="XPATH", |
3028 | 1766 help=_("filter items which has elements matching this xpath"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1767 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1768 filters.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1769 "-P", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1770 "--python", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1771 action="append", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1772 dest="filters", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1773 type=filter_python, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1774 metavar="PYTHON_CODE", |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1775 help=_( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1776 "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
|
1777 '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
|
1778 "lxml's etree.Element" |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1779 ), |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1780 ) |
2316 | 1781 |
1782 # filters flags | |
3028 | 1783 flag_case = partial(self.filter_flag, type_="ignore-case") |
1784 flag_invert = partial(self.filter_flag, type_="invert") | |
1785 flag_dotall = partial(self.filter_flag, type_="dotall") | |
1786 flag_matching = partial(self.filter_flag, type_="only-matching") | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1787 flags = self.parser.add_argument_group( |
3028 | 1788 _("filters flags"), |
1789 _("filters modifiers (change behaviour of following filters)"), | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1790 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1791 flags.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1792 "-C", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1793 "--ignore-case", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1794 action="append", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1795 dest="filters", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1796 type=flag_case, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1797 const=("ignore-case", True), |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1798 nargs="?", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1799 metavar="BOOLEAN", |
3028 | 1800 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
|
1801 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1802 flags.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1803 "-I", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1804 "--invert", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1805 action="append", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1806 dest="filters", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1807 type=flag_invert, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1808 const=("invert", True), |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1809 nargs="?", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1810 metavar="BOOLEAN", |
3028 | 1811 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
|
1812 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1813 flags.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1814 "-A", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1815 "--dot-all", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1816 action="append", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1817 dest="filters", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1818 type=flag_dotall, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1819 const=("dotall", True), |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1820 nargs="?", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1821 metavar="BOOLEAN", |
3028 | 1822 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
|
1823 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1824 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
|
1825 "-k", |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1826 "--only-matching", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1827 action="append", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1828 dest="filters", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1829 type=flag_matching, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1830 const=("only-matching", True), |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1831 nargs="?", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1832 metavar="BOOLEAN", |
3028 | 1833 help=_("keep only the matching part of the item"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1834 ) |
2316 | 1835 |
1836 # action | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1837 self.parser.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1838 "action", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1839 default="print", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1840 nargs="?", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1841 choices=("print", "exec", "external"), |
3028 | 1842 help=_("action to do on found items (DEFAULT: print)"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1843 ) |
2316 | 1844 self.parser.add_argument("command", nargs=argparse.REMAINDER) |
1845 | |
3040 | 1846 async def getItems(self, depth, service, node, items): |
2316 | 1847 self.to_get += 1 |
3040 | 1848 try: |
3312
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1849 ps_result = data_format.deserialise( |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1850 await self.host.bridge.psItemsGet( |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1851 service, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1852 node, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1853 self.args.node_max, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1854 items, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1855 "", |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1856 self.getPubsubExtra(), |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1857 self.profile, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1858 ) |
3040 | 1859 ) |
1860 except Exception as e: | |
1861 self.disp( | |
1862 f"can't get pubsub items at {service} (node: {node}): {e}", | |
1863 error=True, | |
1864 ) | |
1865 self.to_get -= 1 | |
1866 else: | |
3312
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
1867 await self.search(ps_result, depth) |
2316 | 1868 |
1869 def _checkPubsubURL(self, match, found_nodes): | |
1870 """check that the matched URL is an xmpp: one | |
1871 | |
1872 @param found_nodes(list[unicode]): found_nodes | |
1873 this list will be filled while xmpp: URIs are discovered | |
1874 """ | |
1875 url = match.group(0) | |
3028 | 1876 if url.startswith("xmpp"): |
2316 | 1877 try: |
1878 url_data = uri.parseXMPPUri(url) | |
1879 except ValueError: | |
1880 return | |
3028 | 1881 if url_data["type"] == "pubsub": |
1882 found_node = {"service": url_data["path"], "node": url_data["node"]} | |
1883 if "item" in url_data: | |
1884 found_node["item"] = url_data["item"] | |
2316 | 1885 found_nodes.append(found_node) |
1886 | |
3040 | 1887 async def getSubNodes(self, item, depth): |
2316 | 1888 """look for pubsub URIs in item, and getItems on the linked nodes""" |
1889 found_nodes = [] | |
1890 checkURI = partial(self._checkPubsubURL, found_nodes=found_nodes) | |
1891 strings.RE_URL.sub(checkURI, item) | |
1892 for data in found_nodes: | |
3040 | 1893 await self.getItems( |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1894 depth + 1, |
3028 | 1895 data["service"], |
1896 data["node"], | |
1897 [data["item"]] if "item" in data else [], | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1898 ) |
2316 | 1899 |
1900 def parseXml(self, item): | |
1901 try: | |
1902 return self.etree.fromstring(item) | |
1903 except self.etree.XMLSyntaxError: | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1904 self.disp( |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1905 _( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1906 "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
|
1907 "somewhere before and we have no more XML" |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1908 ), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1909 error=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1910 ) |
2316 | 1911 self.host.quit(C.EXIT_BAD_ARG) |
1912 | |
1913 def filter(self, item): | |
1914 """apply filters given on command line | |
1915 | |
1916 if only-matching is used, item may be modified | |
1917 @return (tuple[bool, unicode]): a tuple with: | |
1918 - keep: True if item passed the filters | |
1919 - item: it is returned in case of modifications | |
1920 """ | |
1921 ignore_case = False | |
1922 invert = False | |
1923 dotall = False | |
1924 only_matching = False | |
1925 item_xml = None | |
1926 for type_, value in self.args.filters: | |
1927 keep = True | |
1928 | |
1929 ## filters | |
1930 | |
3028 | 1931 if type_ == "text": |
2316 | 1932 if ignore_case: |
1933 if value.lower() not in item.lower(): | |
1934 keep = False | |
1935 else: | |
1936 if value not in item: | |
1937 keep = False | |
1938 if keep and only_matching: | |
1939 # doesn't really make sens to keep a fixed string | |
1940 # so we raise an error | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1941 self.host.disp( |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1942 _("--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
|
1943 error=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1944 ) |
2316 | 1945 self.host.quit(C.EXIT_BAD_ARG) |
3028 | 1946 elif type_ == "regex": |
2316 | 1947 flags = self.RE_FLAGS |
1948 if ignore_case: | |
1949 flags |= re.IGNORECASE | |
1950 if dotall: | |
1951 flags |= re.DOTALL | |
1952 match = re.search(value, item, flags) | |
1953 keep = match != None | |
1954 if keep and only_matching: | |
1955 item = match.group() | |
1956 item_xml = None | |
3028 | 1957 elif type_ == "xpath": |
2316 | 1958 if item_xml is None: |
1959 item_xml = self.parseXml(item) | |
1960 try: | |
1961 elts = item_xml.xpath(value, namespaces=self.args.namespace) | |
1962 except self.etree.XPathEvalError as e: | |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1963 self.disp(_("can't use xpath: {reason}").format(reason=e), error=True) |
2316 | 1964 self.host.quit(C.EXIT_BAD_ARG) |
1965 keep = bool(elts) | |
1966 if keep and only_matching: | |
1967 item_xml = elts[0] | |
1968 try: | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1969 item = self.etree.tostring(item_xml, encoding="unicode") |
2316 | 1970 except TypeError: |
1971 # we have a string only, not an element | |
3028 | 1972 item = str(item_xml) |
2316 | 1973 item_xml = None |
3028 | 1974 elif type_ == "python": |
2316 | 1975 if item_xml is None: |
1976 item_xml = self.parseXml(item) | |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1977 cmd_ns = {"etree": self.etree, "item": item, "item_xml": item_xml} |
2316 | 1978 try: |
1979 keep = eval(value, cmd_ns) | |
1980 except SyntaxError as e: | |
3028 | 1981 self.disp(str(e), error=True) |
2316 | 1982 self.host.quit(C.EXIT_BAD_ARG) |
1983 | |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
1984 ## flags |
2316 | 1985 |
3028 | 1986 elif type_ == "ignore-case": |
2316 | 1987 ignore_case = value |
3028 | 1988 elif type_ == "invert": |
2316 | 1989 invert = value |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1990 # we need to continue, else loop would end here |
2316 | 1991 continue |
3028 | 1992 elif type_ == "dotall": |
2316 | 1993 dotall = value |
3028 | 1994 elif type_ == "only-matching": |
2316 | 1995 only_matching = value |
1996 else: | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1997 raise exceptions.InternalError( |
3028 | 1998 _("unknown filter type {type}").format(type=type_) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
1999 ) |
2316 | 2000 |
2001 if invert: | |
2002 keep = not keep | |
2003 if not keep: | |
2004 return False, item | |
2005 | |
2006 return True, item | |
2007 | |
3040 | 2008 async def doItemAction(self, item, metadata): |
2316 | 2009 """called when item has been kepts and the action need to be done |
2010 | |
2011 @param item(unicode): accepted item | |
2012 """ | |
2013 action = self.args.action | |
3028 | 2014 if action == "print" or self.host.verbosity > 0: |
2316 | 2015 try: |
3040 | 2016 await self.output(item) |
2316 | 2017 except self.etree.XMLSyntaxError: |
2018 # item is not valid XML, but a string | |
2019 # can happen when --only-matching is used | |
2020 self.disp(item) | |
2021 if action in self.EXEC_ACTIONS: | |
2022 item_elt = self.parseXml(item) | |
3028 | 2023 if action == "exec": |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2024 use = { |
3028 | 2025 "service": metadata["service"], |
2026 "node": metadata["node"], | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2027 "item": item_elt.get("id"), |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2028 "profile": self.profile, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2029 } |
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
|
2030 # 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
|
2031 # else it would be modified |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2032 parser_args, use_args = arg_tools.get_use_args( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2033 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
|
2034 ) |
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
|
2035 cmd_args = sys.argv[0:1] + parser_args + use_args |
2316 | 2036 else: |
2037 cmd_args = self.args.command | |
2038 | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2039 self.disp( |
3028 | 2040 "COMMAND: {command}".format( |
2041 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
|
2042 ), |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2043 2, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2044 ) |
3028 | 2045 if action == "exec": |
3040 | 2046 p = await asyncio.create_subprocess_exec(*cmd_args) |
2047 ret = await p.wait() | |
2316 | 2048 else: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2049 p = await asyncio.create_subprocess_exec(*cmd_args, stdin=subprocess.PIPE) |
3040 | 2050 await p.communicate(item.encode(sys.getfilesystemencoding())) |
2051 ret = p.returncode | |
2316 | 2052 if ret != 0: |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2053 self.disp( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2054 A.color( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2055 C.A_FAILURE, |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2056 _("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
|
2057 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2058 ) |
2316 | 2059 |
3312
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2060 async def search(self, ps_result, depth): |
2316 | 2061 """callback of getItems |
2062 | |
2063 this method filters items, get sub nodes if needed, | |
2064 do the requested action, and exit the command when everything is done | |
2065 @param items_data(tuple): result of getItems | |
2066 @param depth(int): current depth level | |
2067 0 for first node, 1 for first children, and so on | |
2068 """ | |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2069 for item in ps_result["items"]: |
2316 | 2070 if depth < self.args.max_depth: |
3040 | 2071 await self.getSubNodes(item, depth) |
2316 | 2072 keep, item = self.filter(item) |
2073 if not keep: | |
2074 continue | |
3312
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2075 await self.doItemAction(item, ps_result) |
2316 | 2076 |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2077 # we check if we got all getItems results |
2316 | 2078 self.to_get -= 1 |
2079 if self.to_get == 0: | |
2080 # yes, we can quit | |
2081 self.host.quit() | |
2082 assert self.to_get > 0 | |
2083 | |
3040 | 2084 async def start(self): |
2316 | 2085 if self.args.command: |
2086 if self.args.action not in self.EXEC_ACTIONS: | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2087 self.parser.error( |
3028 | 2088 _("Command can only be used with {actions} actions").format( |
2089 actions=", ".join(self.EXEC_ACTIONS) | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2090 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2091 ) |
2316 | 2092 else: |
2093 if self.args.action in self.EXEC_ACTIONS: | |
3028 | 2094 self.parser.error(_("you need to specify a command to execute")) |
2316 | 2095 if not self.args.node: |
2096 # TODO: handle get service affiliations when node is not set | |
3028 | 2097 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
|
2098 # 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
|
2099 # when it reach 0 again, the command is finished |
2316 | 2100 self.to_get = 0 |
2101 self._etree = None | |
2102 if self.args.filters is None: | |
2103 self.args.filters = [] | |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2104 self.args.namespace = dict( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2105 self.args.namespace + [("pubsub", "http://jabber.org/protocol/pubsub")] |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2106 ) |
3040 | 2107 await self.getItems(0, self.args.service, self.args.node, self.args.items) |
2316 | 2108 |
2109 | |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2110 class Transform(base.CommandBase): |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2111 def __init__(self, host): |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2112 base.CommandBase.__init__( |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2113 self, |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2114 host, |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2115 "transform", |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2116 use_pubsub=True, |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2117 pubsub_flags={C.NODE, C.MULTI_ITEMS}, |
3028 | 2118 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
|
2119 ) |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2120 |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2121 def add_parser_options(self): |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2122 self.parser.add_argument( |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2123 "--apply", |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2124 action="store_true", |
3028 | 2125 help=_("apply transformation (DEFAULT: do a dry run)"), |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2126 ) |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2127 self.parser.add_argument( |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2128 "--admin", |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2129 action="store_true", |
3028 | 2130 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
|
2131 ) |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2132 self.parser.add_argument( |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2133 "-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
|
2134 "--ignore-errors", |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2135 action="store_true", |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2136 help=_( |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2137 "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
|
2138 ), |
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 "-A", |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2142 "--all", |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2143 action="store_true", |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2144 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
|
2145 ) |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2146 self.parser.add_argument( |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2147 "command_path", |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2148 help=_( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2149 "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
|
2150 "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
|
2151 '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
|
2152 ), |
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 |
3040 | 2155 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
|
2156 if item_ids: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2157 self.disp( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2158 _("items published with ids {item_ids}").format( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2159 item_ids=", ".join(item_ids) |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2160 ) |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2161 ) |
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
|
2162 else: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2163 self.disp(_("items published")) |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2164 if self.args.all: |
3040 | 2165 return await self.handleNextPage(metadata) |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2166 else: |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2167 self.host.quit() |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2168 |
3040 | 2169 async def handleNextPage(self, metadata): |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2170 """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
|
2171 |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2172 use to handle --all option |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2173 @param metadata(dict): metadata as returned by psItemsGet |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2174 """ |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2175 try: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2176 last = metadata["rsm"]["last"] |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2177 index = int(metadata["rsm"]["index"]) |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2178 count = int(metadata["rsm"]["count"]) |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2179 except KeyError: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2180 self.disp( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2181 _("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
|
2182 ) |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2183 self.host.quit(C.EXIT_MISSING_FEATURE) |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2184 except ValueError as e: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2185 self.disp( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2186 _("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
|
2187 error=True, |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2188 ) |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2189 self.host.quit(C.EXIT_ERROR) |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2190 |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2191 if index + self.args.rsm_max >= count: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2192 self.disp(_("All items transformed")) |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2193 self.host.quit(0) |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2194 |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2195 self.disp( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2196 _("Retrieving next page ({page_idx}/{page_total})").format( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2197 page_idx=int(index / self.args.rsm_max) + 1, |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2198 page_total=int(count / self.args.rsm_max), |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2199 ) |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2200 ) |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2201 |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2202 extra = self.getPubsubExtra() |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2203 extra["rsm_after"] = last |
3040 | 2204 try: |
3312
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2205 ps_result = await data_format.deserialise( |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2206 self.host.bridge.psItemsGet( |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2207 self.args.service, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2208 self.args.node, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2209 self.args.rsm_max, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2210 self.args.items, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2211 "", |
3586
5f65f4e9f8cb
plugin XEP-0060: getItems extra is now serialised dict
Goffi <goffi@goffi.org>
parents:
3568
diff
changeset
|
2212 data_format.serialise(extra), |
3312
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2213 self.profile, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2214 ) |
3040 | 2215 ) |
2216 except Exception as e: | |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2217 self.disp(f"can't retrieve items: {e}", error=True) |
3040 | 2218 self.host.quit(C.EXIT_BRIDGE_ERRBACK) |
2219 else: | |
2220 await self.psItemsGetCb(ps_result) | |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2221 |
3040 | 2222 async def psItemsGetCb(self, ps_result): |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2223 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
|
2224 new_items = [] |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2225 |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2226 for item in ps_result["items"]: |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2227 if self.check_duplicates: |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2228 # this is used when we are not ordering by creation |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2229 # to avoid infinite loop |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2230 item_elt, __ = xml_tools.etreeParse(self, item) |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2231 item_id = item_elt.get("id") |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2232 if item_id in self.items_ids: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2233 self.disp( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2234 _( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2235 "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
|
2236 "all items." |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2237 ).format(item_id=item_id) |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2238 ) |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2239 self.host.quit() |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2240 self.items_ids.append(item_id) |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2241 |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2242 # we launch the command to filter the item |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2243 try: |
3040 | 2244 p = await asyncio.create_subprocess_exec( |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2245 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
|
2246 ) |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2247 except OSError as e: |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2248 exit_code = C.EXIT_CMD_NOT_FOUND if e.errno == 2 else C.EXIT_ERROR |
3040 | 2249 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
|
2250 self.host.quit(exit_code) |
3040 | 2251 encoding = "utf-8" |
2252 cmd_std_out, cmd_std_err = await p.communicate(item.encode(encoding)) | |
2253 ret = p.returncode | |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2254 if ret != 0: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2255 self.disp( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2256 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
|
2257 f"following item:\n\n{item}", |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2258 error=True, |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2259 ) |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2260 if self.args.ignore_errors: |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2261 continue |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2262 else: |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2263 self.host.quit(C.EXIT_CMD_ERROR) |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2264 if cmd_std_err is not None: |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2265 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
|
2266 self.disp(cmd_std_err, error=True) |
3040 | 2267 cmd_std_out = cmd_std_out.decode(encoding).strip() |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2268 if cmd_std_out == "DELETE": |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2269 item_elt, __ = xml_tools.etreeParse(self, item) |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2270 item_id = item_elt.get("id") |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2271 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
|
2272 if self.args.apply: |
3040 | 2273 try: |
3467
5901a7170528
plugin XEP-0060: renamed `psRetractItem(s)` to `psItem(s)Retract` for consistency.
Goffi <goffi@goffi.org>
parents:
3453
diff
changeset
|
2274 await self.host.bridge.psItemRetract( |
3040 | 2275 self.args.service, |
2276 self.args.node, | |
2277 item_id, | |
2278 False, | |
2279 self.profile, | |
2280 ) | |
2281 except Exception as e: | |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2282 self.disp(f"can't delete item {item_id}: {e}", error=True) |
3040 | 2283 self.host.quit(C.EXIT_BRIDGE_ERRBACK) |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2284 continue |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2285 elif cmd_std_out == "SKIP": |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2286 item_elt, __ = xml_tools.etreeParse(self, item) |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2287 item_id = item_elt.get("id") |
3028 | 2288 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
|
2289 continue |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2290 element, etree = xml_tools.etreeParse(self, cmd_std_out) |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2291 |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2292 # 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
|
2293 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
|
2294 self.disp( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2295 "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
|
2296 xml=etree.tostring(element, encoding="unicode") |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2297 ), |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2298 error=True, |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2299 ) |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2300 self.host.quit(C.EXIT_DATA_ERROR) |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2301 |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2302 if not self.args.apply: |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2303 # 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
|
2304 serialised = etree.tostring( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2305 element, encoding="unicode", pretty_print=True |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2306 ) |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2307 self.disp(serialised) |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2308 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
|
2309 new_items.append(etree.tostring(element, encoding="unicode")) |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2310 |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2311 if not self.args.apply: |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2312 # 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
|
2313 if self.args.all: |
3312
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2314 return await self.handleNextPage(ps_result) |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2315 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
|
2316 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
|
2317 if self.args.admin: |
3040 | 2318 bridge_method = self.host.bridge.psAdminItemsSend |
2319 else: | |
2320 bridge_method = self.host.bridge.psItemsSend | |
2321 | |
2322 try: | |
3312
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2323 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
|
2324 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
|
2325 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
|
2326 new_items, |
3028 | 2327 "", |
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
|
2328 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
|
2329 ) |
3040 | 2330 except Exception as e: |
2331 self.disp(f"can't send item: {e}", error=True) | |
2332 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
|
2333 else: |
3312
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2334 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
|
2335 |
3040 | 2336 async def start(self): |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2337 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
|
2338 self.check_duplicates = True |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2339 self.items_ids = [] |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2340 self.disp( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2341 A.color( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2342 A.FG_RED, |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2343 A.BOLD, |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2344 '/!\\ "--all" should be used with "--order-by creation" /!\\\n', |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2345 A.RESET, |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2346 "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
|
2347 "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
|
2348 "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
|
2349 ) |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2350 ) |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2351 else: |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2352 self.check_duplicates = False |
3040 | 2353 |
2354 try: | |
3312
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2355 ps_result = data_format.deserialise( |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2356 await self.host.bridge.psItemsGet( |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2357 self.args.service, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2358 self.args.node, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2359 self.args.max, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2360 self.args.items, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2361 "", |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2362 self.getPubsubExtra(), |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2363 self.profile, |
77177b13ff54
plugin XEP-0060: serialise psItemsGet result with data_format
Goffi <goffi@goffi.org>
parents:
3275
diff
changeset
|
2364 ) |
3040 | 2365 ) |
2366 except Exception as e: | |
2367 self.disp(f"can't retrieve items: {e}", error=True) | |
2368 self.host.quit(C.EXIT_BRIDGE_ERRBACK) | |
2369 else: | |
2370 await self.psItemsGetCb(ps_result) | |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2371 |
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2372 |
2235
4db836386641
jp: added use_pubsub and use_pubsub_node_req arguments to CommandBase
Goffi <goffi@goffi.org>
parents:
2224
diff
changeset
|
2373 class Uri(base.CommandBase): |
2224
87fcd4a7c7e4
jp (pubsub): added uri command to build pubsub URI
Goffi <goffi@goffi.org>
parents:
2221
diff
changeset
|
2374 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2375 base.CommandBase.__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2376 self, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2377 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2378 "uri", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2379 use_profile=False, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2380 use_pubsub=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2381 pubsub_flags={C.NODE, C.SINGLE_ITEM}, |
3028 | 2382 help=_("build URI"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2383 ) |
2224
87fcd4a7c7e4
jp (pubsub): added uri command to build pubsub URI
Goffi <goffi@goffi.org>
parents:
2221
diff
changeset
|
2384 |
87fcd4a7c7e4
jp (pubsub): added uri command to build pubsub URI
Goffi <goffi@goffi.org>
parents:
2221
diff
changeset
|
2385 def add_parser_options(self): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2386 self.parser.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2387 "-p", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2388 "--profile", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2389 default=C.PROF_KEY_DEFAULT, |
3028 | 2390 help=_("profile (used when no server is specified)"), |
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 display_uri(self, jid_): |
2239
17502e74c046
jp (pubsub/uri): fixed URI generation
Goffi <goffi@goffi.org>
parents:
2235
diff
changeset
|
2394 uri_args = {} |
2224
87fcd4a7c7e4
jp (pubsub): added uri command to build pubsub URI
Goffi <goffi@goffi.org>
parents:
2221
diff
changeset
|
2395 if not self.args.service: |
87fcd4a7c7e4
jp (pubsub): added uri command to build pubsub URI
Goffi <goffi@goffi.org>
parents:
2221
diff
changeset
|
2396 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
|
2397 |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2398 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
|
2399 value = getattr(self.args, key) |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2400 if key == "service": |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2401 key = "path" |
2224
87fcd4a7c7e4
jp (pubsub): added uri command to build pubsub URI
Goffi <goffi@goffi.org>
parents:
2221
diff
changeset
|
2402 if value: |
87fcd4a7c7e4
jp (pubsub): added uri command to build pubsub URI
Goffi <goffi@goffi.org>
parents:
2221
diff
changeset
|
2403 uri_args[key] = value |
3028 | 2404 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
|
2405 self.host.quit() |
87fcd4a7c7e4
jp (pubsub): added uri command to build pubsub URI
Goffi <goffi@goffi.org>
parents:
2221
diff
changeset
|
2406 |
3040 | 2407 async def start(self): |
2224
87fcd4a7c7e4
jp (pubsub): added uri command to build pubsub URI
Goffi <goffi@goffi.org>
parents:
2221
diff
changeset
|
2408 if not self.args.service: |
3040 | 2409 try: |
2410 jid_ = await self.host.bridge.asyncGetParamA( | |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2411 "JabberID", "Connection", profile_key=self.args.profile |
3040 | 2412 ) |
2413 except Exception as e: | |
2414 self.disp(f"can't retrieve jid: {e}", error=True) | |
2415 self.host.quit(C.EXIT_BRIDGE_ERRBACK) | |
2416 else: | |
2417 self.display_uri(jid_) | |
2224
87fcd4a7c7e4
jp (pubsub): added uri command to build pubsub URI
Goffi <goffi@goffi.org>
parents:
2221
diff
changeset
|
2418 else: |
87fcd4a7c7e4
jp (pubsub): added uri command to build pubsub URI
Goffi <goffi@goffi.org>
parents:
2221
diff
changeset
|
2419 self.display_uri(None) |
87fcd4a7c7e4
jp (pubsub): added uri command to build pubsub URI
Goffi <goffi@goffi.org>
parents:
2221
diff
changeset
|
2420 |
87fcd4a7c7e4
jp (pubsub): added uri command to build pubsub URI
Goffi <goffi@goffi.org>
parents:
2221
diff
changeset
|
2421 |
3866
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2422 class AttachmentGet(base.CommandBase): |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2423 def __init__(self, host): |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2424 super().__init__( |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2425 host, |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2426 "get", |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2427 use_output=C.OUTPUT_LIST_DICT, |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2428 use_pubsub=True, |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2429 pubsub_flags={C.SERVICE, C.NODE, C.SINGLE_ITEM}, |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2430 help=_("get data attached to an item"), |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2431 ) |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2432 |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2433 def add_parser_options(self): |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2434 self.parser.add_argument( |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2435 "-j", |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2436 "--jid", |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2437 action="append", |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2438 dest="jids", |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2439 help=_( |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2440 "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
|
2441 "attached data)" |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2442 ) |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2443 ) |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2444 |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2445 async def start(self): |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2446 try: |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2447 attached_data, __ = await self.host.bridge.psAttachmentsGet( |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2448 self.args.service, |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2449 self.args.node, |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2450 self.args.item, |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2451 self.args.jids or [], |
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 self.profile, |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2454 ) |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2455 except Exception as e: |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2456 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
|
2457 self.host.quit(C.EXIT_BRIDGE_ERRBACK) |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2458 else: |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2459 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
|
2460 await self.output(attached_data) |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2461 self.host.quit(C.EXIT_OK) |
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 |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2464 class AttachmentSet(base.CommandBase): |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2465 def __init__(self, host): |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2466 super().__init__( |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2467 host, |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2468 "set", |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2469 use_pubsub=True, |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2470 pubsub_flags={C.SERVICE, C.NODE, C.SINGLE_ITEM}, |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2471 help=_("attach data to an item"), |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2472 ) |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2473 |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2474 def add_parser_options(self): |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2475 self.parser.add_argument( |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2476 "--replace", |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2477 action="store_true", |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2478 help=_( |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2479 "replace previous versions of attachments (DEFAULT: update previous " |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2480 "version)" |
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 ) |
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 "-N", |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2485 "--noticed", |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2486 metavar="BOOLEAN", |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2487 nargs="?", |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2488 default="keep", |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2489 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
|
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 "-r", |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2493 "--reactions", |
3889
1ab5fb468a41
cli (pubsub/attachment/set): update reactions handling:
Goffi <goffi@goffi.org>
parents:
3866
diff
changeset
|
2494 # 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
|
2495 action="append", |
3889
1ab5fb468a41
cli (pubsub/attachment/set): update reactions handling:
Goffi <goffi@goffi.org>
parents:
3866
diff
changeset
|
2496 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
|
2497 ) |
1ab5fb468a41
cli (pubsub/attachment/set): update reactions handling:
Goffi <goffi@goffi.org>
parents:
3866
diff
changeset
|
2498 self.parser.add_argument( |
1ab5fb468a41
cli (pubsub/attachment/set): update reactions handling:
Goffi <goffi@goffi.org>
parents:
3866
diff
changeset
|
2499 "-R", |
1ab5fb468a41
cli (pubsub/attachment/set): update reactions handling:
Goffi <goffi@goffi.org>
parents:
3866
diff
changeset
|
2500 "--reactions-remove", |
1ab5fb468a41
cli (pubsub/attachment/set): update reactions handling:
Goffi <goffi@goffi.org>
parents:
3866
diff
changeset
|
2501 # 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
|
2502 action="append", |
1ab5fb468a41
cli (pubsub/attachment/set): update reactions handling:
Goffi <goffi@goffi.org>
parents:
3866
diff
changeset
|
2503 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
|
2504 ) |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2505 |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2506 async def start(self): |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2507 mb_data = { |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2508 "service": self.args.service, |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2509 "node": self.args.node, |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2510 "id": self.args.item, |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2511 "extra": {} |
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 operation = "replace" if self.args.replace else "update" |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2514 if self.args.noticed != "keep": |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2515 if self.args.noticed is None: |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2516 self.args.noticed = C.BOOL_TRUE |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2517 mb_data["extra"]["noticed"] = C.bool(self.args.noticed) |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2518 |
3889
1ab5fb468a41
cli (pubsub/attachment/set): update reactions handling:
Goffi <goffi@goffi.org>
parents:
3866
diff
changeset
|
2519 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
|
2520 reactions = mb_data["extra"]["reactions"] = { |
1ab5fb468a41
cli (pubsub/attachment/set): update reactions handling:
Goffi <goffi@goffi.org>
parents:
3866
diff
changeset
|
2521 "operation": operation |
3866
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2522 } |
3889
1ab5fb468a41
cli (pubsub/attachment/set): update reactions handling:
Goffi <goffi@goffi.org>
parents:
3866
diff
changeset
|
2523 if self.args.replace: |
1ab5fb468a41
cli (pubsub/attachment/set): update reactions handling:
Goffi <goffi@goffi.org>
parents:
3866
diff
changeset
|
2524 reactions["reactions"] = self.args.reactions |
1ab5fb468a41
cli (pubsub/attachment/set): update reactions handling:
Goffi <goffi@goffi.org>
parents:
3866
diff
changeset
|
2525 else: |
1ab5fb468a41
cli (pubsub/attachment/set): update reactions handling:
Goffi <goffi@goffi.org>
parents:
3866
diff
changeset
|
2526 reactions["add"] = self.args.reactions |
1ab5fb468a41
cli (pubsub/attachment/set): update reactions handling:
Goffi <goffi@goffi.org>
parents:
3866
diff
changeset
|
2527 reactions["remove"] = self.args.reactions_remove |
1ab5fb468a41
cli (pubsub/attachment/set): update reactions handling:
Goffi <goffi@goffi.org>
parents:
3866
diff
changeset
|
2528 |
3866
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2529 |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2530 if not mb_data["extra"]: |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2531 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
|
2532 |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2533 try: |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2534 await self.host.bridge.psAttachmentsSet( |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2535 data_format.serialise(mb_data), |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2536 self.profile, |
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 except Exception as e: |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2539 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
|
2540 self.host.quit(C.EXIT_BRIDGE_ERRBACK) |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2541 else: |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2542 self.disp("data attached") |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2543 self.host.quit(C.EXIT_OK) |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2544 |
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 class Attachments(base.CommandBase): |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2547 subcommands = (AttachmentGet, AttachmentSet) |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2548 |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2549 def __init__(self, host): |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2550 super().__init__( |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2551 host, |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2552 "attachments", |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2553 use_profile=False, |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2554 help=_("set or retrieve items attachments"), |
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2555 ) |
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 |
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
|
2558 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
|
2559 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2560 base.CommandBase.__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2561 self, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2562 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2563 "create", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2564 use_pubsub=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2565 pubsub_flags={C.NODE}, |
3028 | 2566 help=_("create a Pubsub hook"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2567 ) |
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
|
2568 |
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2569 def add_parser_options(self): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2570 self.parser.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2571 "-t", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2572 "--type", |
3028 | 2573 default="python", |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2574 choices=("python", "python_file", "python_code"), |
3028 | 2575 help=_("hook type"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2576 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2577 self.parser.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2578 "-P", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2579 "--persistent", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2580 action="store_true", |
3028 | 2581 help=_("make hook persistent across restarts"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2582 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2583 self.parser.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2584 "hook_arg", |
3028 | 2585 help=_("argument of the hook (depend of the type)"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2586 ) |
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
|
2587 |
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2588 @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
|
2589 def checkArgs(self): |
3028 | 2590 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
|
2591 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
|
2592 if not os.path.isfile(self.args.hook_arg): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2593 self.parser.error( |
3028 | 2594 _("{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
|
2595 ) |
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
|
2596 |
3040 | 2597 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
|
2598 self.checkArgs(self) |
3040 | 2599 try: |
2600 await self.host.bridge.psHookAdd( | |
2601 self.args.service, | |
2602 self.args.node, | |
2603 self.args.type, | |
2604 self.args.hook_arg, | |
2605 self.args.persistent, | |
2606 self.profile, | |
2607 ) | |
2608 except Exception as e: | |
2609 self.disp(f"can't create hook: {e}", error=True) | |
2610 self.host.quit(C.EXIT_BRIDGE_ERRBACK) | |
2611 else: | |
2612 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
|
2613 |
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2614 |
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2615 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
|
2616 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2617 base.CommandBase.__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2618 self, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2619 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2620 "delete", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2621 use_pubsub=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2622 pubsub_flags={C.NODE}, |
3028 | 2623 help=_("delete a Pubsub hook"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2624 ) |
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
|
2625 |
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2626 def add_parser_options(self): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2627 self.parser.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2628 "-t", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2629 "--type", |
3028 | 2630 default="", |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2631 choices=("", "python", "python_file", "python_code"), |
3028 | 2632 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
|
2633 ) |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2634 self.parser.add_argument( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2635 "-a", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2636 "--arg", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2637 dest="hook_arg", |
3028 | 2638 default="", |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2639 help=_( |
3028 | 2640 "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
|
2641 ), |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2642 ) |
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
|
2643 |
3040 | 2644 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
|
2645 HookCreate.checkArgs(self) |
3040 | 2646 try: |
2647 nb_deleted = await self.host.bridge.psHookRemove( | |
2648 self.args.service, | |
2649 self.args.node, | |
2650 self.args.type, | |
2651 self.args.hook_arg, | |
2652 self.profile, | |
2653 ) | |
2654 except Exception as e: | |
2655 self.disp(f"can't delete hook: {e}", error=True) | |
2656 self.host.quit(C.EXIT_BRIDGE_ERRBACK) | |
2657 else: | |
3568
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2658 self.disp( |
04283582966f
core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents:
3521
diff
changeset
|
2659 _("{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
|
2660 ) |
3040 | 2661 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
|
2662 |
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2663 |
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2664 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
|
2665 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2666 base.CommandBase.__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2667 self, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2668 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2669 "list", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2670 use_output=C.OUTPUT_LIST_DICT, |
3028 | 2671 help=_("list hooks of a profile"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2672 ) |
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
|
2673 |
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2674 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
|
2675 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
|
2676 |
3040 | 2677 async def start(self): |
2678 try: | |
2679 data = await self.host.bridge.psHookList( | |
2680 self.profile, | |
2681 ) | |
2682 except Exception as e: | |
2683 self.disp(f"can't list hooks: {e}", error=True) | |
2684 self.host.quit(C.EXIT_BRIDGE_ERRBACK) | |
2685 else: | |
2686 if not data: | |
2687 self.disp(_("No hook found.")) | |
2688 await self.output(data) | |
2689 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
|
2690 |
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2691 |
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2692 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
|
2693 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
|
2694 |
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2695 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2696 super(Hook, self).__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2697 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2698 "hook", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2699 use_profile=False, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2700 use_verbose=True, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2701 help=_("trigger action on Pubsub notifications"), |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2702 ) |
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
|
2703 |
0b21d87c91cf
jp (pubsub/hook): added create/delete/list hook command to handle new Pubsub hook feature
Goffi <goffi@goffi.org>
parents:
2292
diff
changeset
|
2704 |
2191
a1a8233f89e8
jp(pubsub/get): pubsub/get command, first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
2705 class Pubsub(base.CommandBase): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2706 subcommands = ( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2707 Set, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2708 Get, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2709 Delete, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2710 Edit, |
3521
62f490eff51c
jp (pubsub, blog): `rename` commands implementation
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
2711 Rename, |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2712 Subscribe, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2713 Unsubscribe, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2714 Subscriptions, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2715 Affiliations, |
3835
f599e0e36444
cli (pubsub): new `reference` subcommand to send references/mentions to pubsub items:
Goffi <goffi@goffi.org>
parents:
3758
diff
changeset
|
2716 Reference, |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2717 Search, |
2777
ff1b40823b07
jp (pubsub): new "transform" command:
Goffi <goffi@goffi.org>
parents:
2773
diff
changeset
|
2718 Transform, |
3866
915fb230cb28
cli (blog, pubsub): new `attachments` subcommands:
Goffi <goffi@goffi.org>
parents:
3835
diff
changeset
|
2719 Attachments, |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2720 Hook, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2721 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
|
2722 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
|
2723 Cache, |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2724 ) |
2191
a1a8233f89e8
jp(pubsub/get): pubsub/get command, first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
2725 |
a1a8233f89e8
jp(pubsub/get): pubsub/get command, first draft
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
2726 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2727 super(Pubsub, self).__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2728 host, "pubsub", use_profile=False, help=_("PubSub nodes/items management") |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
2729 ) |