annotate libervia/cli/cmd_pubsub.py @ 4309:b56b1eae7994

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