annotate libervia/cli/cmd_pubsub.py @ 4397:6e3a0ef1c561 default tip

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