Mercurial > libervia-backend
annotate sat_frontends/jp/cmd_identity.py @ 4010:818db4ca3717
tools (xml_tools): accept several namespaces in `findAncestor`
author | Goffi <goffi@goffi.org> |
---|---|
date | Thu, 16 Mar 2023 16:43:08 +0100 |
parents | 10a4846818e5 |
children | 524856bd7b19 |
rev | line source |
---|---|
3137 | 1 #!/usr/bin/env python3 |
2 | |
2254
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
3 |
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
4 # jp: a SàT command line tool |
3479 | 5 # Copyright (C) 2009-2021 Jérôme Poisson (goffi@goffi.org) |
2254
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
6 |
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
7 # This program is free software: you can redistribute it and/or modify |
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
8 # it under the terms of the GNU Affero General Public License as published by |
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
9 # the Free Software Foundation, either version 3 of the License, or |
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
10 # (at your option) any later version. |
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
11 |
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
12 # This program is distributed in the hope that it will be useful, |
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
15 # GNU Affero General Public License for more details. |
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
16 |
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
17 # You should have received a copy of the GNU Affero General Public License |
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
19 |
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
20 |
3028 | 21 from . import base |
2254
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
22 from sat.core.i18n import _ |
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
23 from sat_frontends.jp.constants import Const as C |
3254
6cf4bd6972c2
core, frontends: avatar refactoring:
Goffi <goffi@goffi.org>
parents:
3137
diff
changeset
|
24 from sat.tools.common import data_format |
2254
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
25 |
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
26 __commands__ = ["Identity"] |
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
27 |
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
28 |
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
29 class Get(base.CommandBase): |
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
30 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
31 base.CommandBase.__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
32 self, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
33 host, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
34 "get", |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
35 use_output=C.OUTPUT_DICT, |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
36 use_verbose=True, |
3028 | 37 help=_("get identity data"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
38 ) |
2254
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
39 |
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
40 def add_parser_options(self): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
41 self.parser.add_argument( |
3254
6cf4bd6972c2
core, frontends: avatar refactoring:
Goffi <goffi@goffi.org>
parents:
3137
diff
changeset
|
42 "--no-cache", action="store_true", help=_("do no use cached values") |
6cf4bd6972c2
core, frontends: avatar refactoring:
Goffi <goffi@goffi.org>
parents:
3137
diff
changeset
|
43 ) |
6cf4bd6972c2
core, frontends: avatar refactoring:
Goffi <goffi@goffi.org>
parents:
3137
diff
changeset
|
44 self.parser.add_argument( |
3028 | 45 "jid", help=_("entity to check") |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
46 ) |
2254
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
47 |
3040 | 48 async def start(self): |
49 jid_ = (await self.host.check_jids([self.args.jid]))[0] | |
50 try: | |
51 data = await self.host.bridge.identityGet( | |
52 jid_, | |
3254
6cf4bd6972c2
core, frontends: avatar refactoring:
Goffi <goffi@goffi.org>
parents:
3137
diff
changeset
|
53 [], |
6cf4bd6972c2
core, frontends: avatar refactoring:
Goffi <goffi@goffi.org>
parents:
3137
diff
changeset
|
54 not self.args.no_cache, |
6cf4bd6972c2
core, frontends: avatar refactoring:
Goffi <goffi@goffi.org>
parents:
3137
diff
changeset
|
55 self.profile |
3040 | 56 ) |
57 except Exception as e: | |
58 self.disp(f"can't get identity data: {e}", error=True) | |
59 self.host.quit(C.EXIT_BRIDGE_ERRBACK) | |
60 else: | |
3254
6cf4bd6972c2
core, frontends: avatar refactoring:
Goffi <goffi@goffi.org>
parents:
3137
diff
changeset
|
61 data = data_format.deserialise(data) |
3040 | 62 await self.output(data) |
63 self.host.quit() | |
2254
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
64 |
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
65 |
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
66 class Set(base.CommandBase): |
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
67 def __init__(self, host): |
3254
6cf4bd6972c2
core, frontends: avatar refactoring:
Goffi <goffi@goffi.org>
parents:
3137
diff
changeset
|
68 super(Set, self).__init__(host, "set", help=_("update identity data")) |
2254
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
69 |
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
70 def add_parser_options(self): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
71 self.parser.add_argument( |
3254
6cf4bd6972c2
core, frontends: avatar refactoring:
Goffi <goffi@goffi.org>
parents:
3137
diff
changeset
|
72 "-n", |
6cf4bd6972c2
core, frontends: avatar refactoring:
Goffi <goffi@goffi.org>
parents:
3137
diff
changeset
|
73 "--nickname", |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
74 action="append", |
3825
10a4846818e5
CLI (identity): add description to `identity set`:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
75 metavar="NICKNAME", |
3254
6cf4bd6972c2
core, frontends: avatar refactoring:
Goffi <goffi@goffi.org>
parents:
3137
diff
changeset
|
76 dest="nicknames", |
6cf4bd6972c2
core, frontends: avatar refactoring:
Goffi <goffi@goffi.org>
parents:
3137
diff
changeset
|
77 help=_("nicknames of the entity"), |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
78 ) |
3825
10a4846818e5
CLI (identity): add description to `identity set`:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
79 self.parser.add_argument( |
10a4846818e5
CLI (identity): add description to `identity set`:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
80 "-d", |
10a4846818e5
CLI (identity): add description to `identity set`:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
81 "--description", |
10a4846818e5
CLI (identity): add description to `identity set`:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
82 help=_("description of the entity"), |
10a4846818e5
CLI (identity): add description to `identity set`:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
83 ) |
2254
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
84 |
3040 | 85 async def start(self): |
3825
10a4846818e5
CLI (identity): add description to `identity set`:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
86 id_data = {} |
10a4846818e5
CLI (identity): add description to `identity set`:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
87 for field in ("nicknames", "description"): |
10a4846818e5
CLI (identity): add description to `identity set`:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
88 value = getattr(self.args, field) |
10a4846818e5
CLI (identity): add description to `identity set`:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
89 if value is not None: |
10a4846818e5
CLI (identity): add description to `identity set`:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
90 id_data[field] = value |
10a4846818e5
CLI (identity): add description to `identity set`:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
91 if not id_data: |
10a4846818e5
CLI (identity): add description to `identity set`:
Goffi <goffi@goffi.org>
parents:
3479
diff
changeset
|
92 self.parser.error("At least one metadata must be set") |
3040 | 93 try: |
94 self.host.bridge.identitySet( | |
3254
6cf4bd6972c2
core, frontends: avatar refactoring:
Goffi <goffi@goffi.org>
parents:
3137
diff
changeset
|
95 data_format.serialise(id_data), |
3040 | 96 self.profile, |
97 ) | |
98 except Exception as e: | |
99 self.disp(f"can't set identity data: {e}", error=True) | |
100 self.host.quit(C.EXIT_BRIDGE_ERRBACK) | |
101 else: | |
102 self.host.quit() | |
2254
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
103 |
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
104 |
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
105 class Identity(base.CommandBase): |
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
106 subcommands = (Get, Set) |
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
107 |
6297817c3dc9
jp (identity): new identity command to handle the new plugin identity in backend, and maybe other plugins like vcard in the future
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
108 def __init__(self, host): |
2624
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
109 super(Identity, self).__init__( |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
110 host, "identity", use_profile=False, help=_("identity management") |
56f94936df1e
code style reformatting using black
Goffi <goffi@goffi.org>
parents:
2562
diff
changeset
|
111 ) |