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