annotate libervia/cli/cmd_event.py @ 4306:94e0968987cd

plugin XEP-0033: code modernisation, improve delivery, data validation: - Code has been rewritten using Pydantic models and `async` coroutines for data validation and cleaner element parsing/generation. - Delivery has been completely rewritten. It now works even if server doesn't support multicast, and send to local multicast service first. Delivering to local multicast service first is due to bad support of XEP-0033 in server (notably Prosody which has an incomplete implementation), and the current impossibility to detect if a sub-domain service handles fully multicast or only for local domains. This is a workaround to have a good balance between backward compatilibity and use of bandwith, and to make it work with the incoming email gateway implementation (the gateway will only deliver to entities of its own domain). - disco feature checking now uses `async` corountines. `host` implementation still use Deferred return values for compatibility with legacy code. rel 450
author Goffi <goffi@goffi.org>
date Thu, 26 Sep 2024 16:12:01 +0200
parents 0d7bb4df2343
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3137
559a625a236b fixed shebangs
Goffi <goffi@goffi.org>
parents: 3136
diff changeset
1 #!/usr/bin/env python3
559a625a236b fixed shebangs
Goffi <goffi@goffi.org>
parents: 3136
diff changeset
2
2236
4b1873ce6b61 jp (event): event handling commands, first draft
Goffi <goffi@goffi.org>
parents:
diff changeset
3
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
4 # libervia-cli: Libervia CLI frontend
3479
be6d91572633 date update
Goffi <goffi@goffi.org>
parents: 3276
diff changeset
5 # Copyright (C) 2009-2021 Jérôme Poisson (goffi@goffi.org)
2236
4b1873ce6b61 jp (event): event handling commands, first draft
Goffi <goffi@goffi.org>
parents:
diff changeset
6
4b1873ce6b61 jp (event): event handling commands, first draft
Goffi <goffi@goffi.org>
parents:
diff changeset
7 # This program is free software: you can redistribute it and/or modify
4b1873ce6b61 jp (event): event handling commands, first draft
Goffi <goffi@goffi.org>
parents:
diff changeset
8 # it under the terms of the GNU Affero General Public License as published by
4b1873ce6b61 jp (event): event handling commands, first draft
Goffi <goffi@goffi.org>
parents:
diff changeset
9 # the Free Software Foundation, either version 3 of the License, or
4b1873ce6b61 jp (event): event handling commands, first draft
Goffi <goffi@goffi.org>
parents:
diff changeset
10 # (at your option) any later version.
4b1873ce6b61 jp (event): event handling commands, first draft
Goffi <goffi@goffi.org>
parents:
diff changeset
11
4b1873ce6b61 jp (event): event handling commands, first draft
Goffi <goffi@goffi.org>
parents:
diff changeset
12 # This program is distributed in the hope that it will be useful,
4b1873ce6b61 jp (event): event handling commands, first draft
Goffi <goffi@goffi.org>
parents:
diff changeset
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
4b1873ce6b61 jp (event): event handling commands, first draft
Goffi <goffi@goffi.org>
parents:
diff changeset
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4b1873ce6b61 jp (event): event handling commands, first draft
Goffi <goffi@goffi.org>
parents:
diff changeset
15 # GNU Affero General Public License for more details.
4b1873ce6b61 jp (event): event handling commands, first draft
Goffi <goffi@goffi.org>
parents:
diff changeset
16
4b1873ce6b61 jp (event): event handling commands, first draft
Goffi <goffi@goffi.org>
parents:
diff changeset
17 # You should have received a copy of the GNU Affero General Public License
4b1873ce6b61 jp (event): event handling commands, first draft
Goffi <goffi@goffi.org>
parents:
diff changeset
18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
4b1873ce6b61 jp (event): event handling commands, first draft
Goffi <goffi@goffi.org>
parents:
diff changeset
19
4b1873ce6b61 jp (event): event handling commands, first draft
Goffi <goffi@goffi.org>
parents:
diff changeset
20
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
21 import argparse
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
22 import sys
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
23
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
24 from sqlalchemy import desc
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
25
4071
4b842c1fb686 refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents: 4037
diff changeset
26 from libervia.backend.core.i18n import _
4b842c1fb686 refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents: 4037
diff changeset
27 from libervia.backend.core.i18n import _
4b842c1fb686 refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents: 4037
diff changeset
28 from libervia.backend.tools.common import data_format
4b842c1fb686 refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents: 4037
diff changeset
29 from libervia.backend.tools.common import data_format
4b842c1fb686 refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents: 4037
diff changeset
30 from libervia.backend.tools.common import date_utils
4b842c1fb686 refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents: 4037
diff changeset
31 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
32 from libervia.backend.tools.common.ansi import ANSI as A
4075
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.constants import Const as C
47401850dec6 refactoring: rename `libervia.frontends.jp` to `libervia.cli`
Goffi <goffi@goffi.org>
parents: 4074
diff changeset
35 from libervia.cli.constants import Const as C
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
36
3254
6cf4bd6972c2 core, frontends: avatar refactoring:
Goffi <goffi@goffi.org>
parents: 3137
diff changeset
37 from . import base
2236
4b1873ce6b61 jp (event): event handling commands, first draft
Goffi <goffi@goffi.org>
parents:
diff changeset
38
4b1873ce6b61 jp (event): event handling commands, first draft
Goffi <goffi@goffi.org>
parents:
diff changeset
39 __commands__ = ["Event"]
4b1873ce6b61 jp (event): event handling commands, first draft
Goffi <goffi@goffi.org>
parents:
diff changeset
40
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
41 OUTPUT_OPT_TABLE = "table"
2300
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
42
3276
81c8910db91f jp (event): new `list` command to get evens available in a service
Goffi <goffi@goffi.org>
parents: 3254
diff changeset
43
2236
4b1873ce6b61 jp (event): event handling commands, first draft
Goffi <goffi@goffi.org>
parents:
diff changeset
44 class Get(base.CommandBase):
4b1873ce6b61 jp (event): event handling commands, first draft
Goffi <goffi@goffi.org>
parents:
diff changeset
45 def __init__(self, host):
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
46 base.CommandBase.__init__(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
47 self,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
48 host,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
49 "get",
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
50 use_output=C.OUTPUT_LIST_DICT,
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
51 use_pubsub=True,
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
52 pubsub_flags={C.MULTI_ITEMS, C.CACHE},
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
53 use_verbose=True,
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
54 extra_outputs={
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
55 "default": self.default_output,
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
56 },
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
57 help=_("get event(s) data"),
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
58 )
2244
9d49e66bdbf2 jp (event): creation/modification of main event + invitee commands are now in a "invitee" subcommand
Goffi <goffi@goffi.org>
parents: 2236
diff changeset
59
9d49e66bdbf2 jp (event): creation/modification of main event + invitee commands are now in a "invitee" subcommand
Goffi <goffi@goffi.org>
parents: 2236
diff changeset
60 def add_parser_options(self):
2532
772447ec070f jp: pubsub options refactoring:
Goffi <goffi@goffi.org>
parents: 2491
diff changeset
61 pass
2244
9d49e66bdbf2 jp (event): creation/modification of main event + invitee commands are now in a "invitee" subcommand
Goffi <goffi@goffi.org>
parents: 2236
diff changeset
62
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
63 async def start(self):
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
64 try:
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3906
diff changeset
65 events_data_s = await self.host.bridge.events_get(
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
66 self.args.service,
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
67 self.args.node,
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
68 self.args.items,
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3906
diff changeset
69 self.get_pubsub_extra(),
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
70 self.profile,
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
71 )
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
72 except Exception as e:
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
73 self.disp(f"can't get events data: {e}", error=True)
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
74 self.host.quit(C.EXIT_BRIDGE_ERRBACK)
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
75 else:
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
76 events_data = data_format.deserialise(events_data_s, type_check=list)
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
77 await self.output(events_data)
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
78 self.host.quit()
2244
9d49e66bdbf2 jp (event): creation/modification of main event + invitee commands are now in a "invitee" subcommand
Goffi <goffi@goffi.org>
parents: 2236
diff changeset
79
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
80 def default_output(self, events):
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
81 nb_events = len(events)
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
82 for idx, event in enumerate(events):
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
83 names = event["name"]
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
84 name = names.get("") or next(iter(names.values()))
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
85 start = event["start"]
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
86 start_human = date_utils.date_fmt(
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
87 start, "medium", tz_info=date_utils.TZ_LOCAL
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
88 )
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
89 end = event["end"]
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
90 self.disp(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
91 A.color(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
92 A.BOLD,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
93 start_human,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
94 A.RESET,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
95 " ",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
96 f"({date_utils.delta2human(start, end)}) ",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
97 C.A_HEADER,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
98 name,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
99 )
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
100 )
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
101 if self.verbosity > 0:
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
102 descriptions = event.get("descriptions", [])
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
103 if descriptions:
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
104 self.disp(descriptions[0]["description"])
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
105 if idx < (nb_events - 1):
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
106 self.disp("")
2244
9d49e66bdbf2 jp (event): creation/modification of main event + invitee commands are now in a "invitee" subcommand
Goffi <goffi@goffi.org>
parents: 2236
diff changeset
107
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
108
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
109 class CategoryAction(argparse.Action):
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
110
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
111 def __init__(self, option_strings, dest, nargs=None, metavar=None, **kwargs):
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
112 if nargs is not None or metavar is not None:
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
113 raise ValueError("nargs and metavar must not be used")
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
114 if metavar is not None:
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
115 metavar = "TERM WIKIDATA_ID LANG"
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
116 if "--help" in sys.argv:
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
117 # FIXME: dirty workaround to have correct --help message
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
118 # argparse doesn't normally allow variable number of arguments beside "+"
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
119 # and "*", this workaround show METAVAR as 3 arguments were expected, while
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
120 # we can actuall use 1, 2 or 3.
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
121 nargs = 3
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
122 metavar = ("TERM", "[WIKIDATA_ID]", "[LANG]")
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
123 else:
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
124 nargs = "+"
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
125
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
126 super().__init__(option_strings, dest, metavar=metavar, nargs=nargs, **kwargs)
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
127
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
128 def __call__(self, parser, namespace, values, option_string=None):
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
129 categories = getattr(namespace, self.dest)
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
130 if categories is None:
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
131 categories = []
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
132 setattr(namespace, self.dest, categories)
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
133
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
134 if not values:
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
135 parser.error("category values must be set")
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
136
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
137 category = {"term": values[0]}
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
138
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
139 if len(values) == 1:
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
140 pass
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
141 elif len(values) == 2:
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
142 value = values[1]
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
143 if value.startswith("Q"):
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
144 category["wikidata_id"] = value
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
145 else:
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
146 category["language"] = value
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
147 elif len(values) == 3:
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
148 __, wd, lang = values
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
149 category["wikidata_id"] = wd
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
150 category["language"] = lang
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
151 else:
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
152 parser.error("Category can't have more than 3 arguments")
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
153
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
154 categories.append(category)
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
155
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
156
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
157 class EventBase:
2244
9d49e66bdbf2 jp (event): creation/modification of main event + invitee commands are now in a "invitee" subcommand
Goffi <goffi@goffi.org>
parents: 2236
diff changeset
158 def add_parser_options(self):
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
159 self.parser.add_argument(
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
160 "-S",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
161 "--start",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
162 type=base.date_decoder,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
163 metavar="TIME_PATTERN",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
164 help=_("the start time of the event"),
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
165 )
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
166 end_group = self.parser.add_mutually_exclusive_group()
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
167 end_group.add_argument(
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
168 "-E",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
169 "--end",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
170 type=base.date_decoder,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
171 metavar="TIME_PATTERN",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
172 help=_("the time of the end of the event"),
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
173 )
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
174 end_group.add_argument("-D", "--duration", help=_("duration of the event"))
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
175 self.parser.add_argument(
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
176 "-H", "--head-picture", help="URL to a picture to use as head-picture"
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
177 )
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
178 self.parser.add_argument(
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
179 "-d", "--description", help="plain text description the event"
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
180 )
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
181 self.parser.add_argument(
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
182 "-C",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
183 "--category",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
184 action=CategoryAction,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
185 dest="categories",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
186 help="Category of the event",
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
187 )
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
188 self.parser.add_argument(
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
189 "-l",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
190 "--location",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
191 action="append",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
192 nargs="+",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
193 metavar="[KEY] VALUE",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
194 help="Location metadata",
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
195 )
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
196 rsvp_group = self.parser.add_mutually_exclusive_group()
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
197 rsvp_group.add_argument(
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
198 "--rsvp", action="store_true", help=_("RSVP is requested")
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
199 )
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
200 rsvp_group.add_argument(
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
201 "--rsvp_json", metavar="JSON", help=_("JSON description of RSVP form")
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
202 )
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
203 for node_type in ("invitees", "comments", "blog", "schedule"):
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
204 self.parser.add_argument(
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
205 f"--{node_type}",
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
206 nargs=2,
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
207 metavar=("JID", "NODE"),
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
208 help=_("link {node_type} pubsub node").format(node_type=node_type),
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
209 )
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
210 self.parser.add_argument(
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
211 "-a",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
212 "--attachment",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
213 action="append",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
214 dest="attachments",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
215 help=_("attach a file"),
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
216 )
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
217 self.parser.add_argument("--website", help=_("website of the event"))
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
218 self.parser.add_argument(
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
219 "--status",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
220 choices=["confirmed", "tentative", "cancelled"],
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
221 help=_("status of the event"),
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
222 )
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
223 self.parser.add_argument(
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
224 "-T",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
225 "--language",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
226 metavar="LANG",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
227 action="append",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
228 dest="languages",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
229 help=_("main languages spoken at the event"),
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
230 )
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
231 self.parser.add_argument(
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
232 "--wheelchair",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
233 choices=["full", "partial", "no"],
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
234 help=_("is the location accessible by wheelchair"),
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
235 )
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
236 self.parser.add_argument(
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
237 "--external",
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
238 nargs=3,
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
239 metavar=("JID", "NODE", "ITEM"),
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
240 help=_("link to an external event"),
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
241 )
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
242
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
243 def get_event_data(self):
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
244 if self.args.duration is not None:
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
245 if self.args.start is None:
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
246 self.parser.error("--start must be send if --duration is used")
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
247 # if duration is used, we simply add it to start time to get end time
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
248 self.args.end = base.date_decoder(f"{self.args.start} + {self.args.duration}")
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
249
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
250 event = {}
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
251 if self.args.name is not None:
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
252 event["name"] = {"": self.args.name}
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
253
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
254 if self.args.start is not None:
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
255 event["start"] = self.args.start
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
256
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
257 if self.args.end is not None:
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
258 event["end"] = self.args.end
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
259
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
260 if self.args.head_picture:
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
261 event["head-picture"] = {"sources": [{"url": self.args.head_picture}]}
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
262 if self.args.description:
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
263 event["descriptions"] = [
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
264 {"type": "text", "description": self.args.description}
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
265 ]
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
266 if self.args.categories:
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
267 event["categories"] = self.args.categories
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
268 if self.args.location is not None:
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
269 location = {}
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
270 for location_data in self.args.location:
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
271 if len(location_data) == 1:
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
272 location["description"] = location_data[0]
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
273 else:
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
274 key, *values = location_data
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
275 location[key] = " ".join(values)
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
276 event["locations"] = [location]
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
277
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
278 if self.args.rsvp:
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
279 event["rsvp"] = [{}]
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
280 elif self.args.rsvp_json:
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
281 if isinstance(self.args.rsvp_elt, dict):
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
282 event["rsvp"] = [self.args.rsvp_json]
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
283 else:
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
284 event["rsvp"] = self.args.rsvp_json
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
285
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
286 for node_type in ("invitees", "comments", "blog", "schedule"):
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
287 value = getattr(self.args, node_type)
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
288 if value:
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
289 service, node = value
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
290 event[node_type] = {"service": service, "node": node}
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
291
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
292 if self.args.attachments:
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
293 attachments = event["attachments"] = []
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
294 for attachment in self.args.attachments:
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
295 attachments.append({"sources": [{"url": attachment}]})
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
296
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
297 extra = {}
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
298
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
299 for arg in ("website", "status", "languages"):
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
300 value = getattr(self.args, arg)
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
301 if value is not None:
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
302 extra[arg] = value
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
303 if self.args.wheelchair is not None:
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
304 extra["accessibility"] = {"wheelchair": self.args.wheelchair}
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
305
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
306 if extra:
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
307 event["extra"] = extra
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
308
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
309 if self.args.external:
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
310 ext_jid, ext_node, ext_item = self.args.external
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
311 event["external"] = {"jid": ext_jid, "node": ext_node, "item": ext_item}
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
312 return event
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
313
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
314
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
315 class Create(EventBase, base.CommandBase):
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
316 def __init__(self, host):
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
317 super().__init__(
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
318 host,
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
319 "create",
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
320 use_pubsub=True,
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
321 help=_("create or replace event"),
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
322 )
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
323
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
324 def add_parser_options(self):
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
325 super().add_parser_options()
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
326 self.parser.add_argument(
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
327 "-i",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
328 "--id",
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
329 default="",
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
330 help=_("ID of the PubSub Item"),
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
331 )
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
332 # name is mandatory here
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
333 self.parser.add_argument("name", help=_("name of the event"))
2244
9d49e66bdbf2 jp (event): creation/modification of main event + invitee commands are now in a "invitee" subcommand
Goffi <goffi@goffi.org>
parents: 2236
diff changeset
334
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
335 async def start(self):
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
336 if self.args.start is None:
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
337 self.parser.error("--start must be set")
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
338 event_data = self.get_event_data()
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
339 # we check self.args.end after get_event_data because it may be set there id
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
340 # --duration is used
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
341 if self.args.end is None:
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
342 self.parser.error("--end or --duration must be set")
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
343 try:
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3906
diff changeset
344 await self.host.bridge.event_create(
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
345 data_format.serialise(event_data),
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
346 self.args.id,
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
347 self.args.node,
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
348 self.args.service,
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
349 self.profile,
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
350 )
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
351 except Exception as e:
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
352 self.disp(f"can't create event: {e}", error=True)
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
353 self.host.quit(C.EXIT_BRIDGE_ERRBACK)
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
354 else:
4090
e9d800b105c1 cli (event): minor typo
Goffi <goffi@goffi.org>
parents: 4075
diff changeset
355 self.disp(_("Event created successfuly"))
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
356 self.host.quit()
2244
9d49e66bdbf2 jp (event): creation/modification of main event + invitee commands are now in a "invitee" subcommand
Goffi <goffi@goffi.org>
parents: 2236
diff changeset
357
9d49e66bdbf2 jp (event): creation/modification of main event + invitee commands are now in a "invitee" subcommand
Goffi <goffi@goffi.org>
parents: 2236
diff changeset
358
9d49e66bdbf2 jp (event): creation/modification of main event + invitee commands are now in a "invitee" subcommand
Goffi <goffi@goffi.org>
parents: 2236
diff changeset
359 class Modify(EventBase, base.CommandBase):
9d49e66bdbf2 jp (event): creation/modification of main event + invitee commands are now in a "invitee" subcommand
Goffi <goffi@goffi.org>
parents: 2236
diff changeset
360 def __init__(self, host):
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
361 super(Modify, self).__init__(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
362 host,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
363 "modify",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
364 use_pubsub=True,
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
365 pubsub_flags={C.SINGLE_ITEM},
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
366 help=_("modify an existing event"),
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
367 )
2244
9d49e66bdbf2 jp (event): creation/modification of main event + invitee commands are now in a "invitee" subcommand
Goffi <goffi@goffi.org>
parents: 2236
diff changeset
368 EventBase.__init__(self)
9d49e66bdbf2 jp (event): creation/modification of main event + invitee commands are now in a "invitee" subcommand
Goffi <goffi@goffi.org>
parents: 2236
diff changeset
369
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
370 def add_parser_options(self):
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
371 super().add_parser_options()
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
372 # name is optional here
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
373 self.parser.add_argument("-N", "--name", help=_("name of the event"))
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
374
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
375 async def start(self):
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
376 event_data = self.get_event_data()
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
377 try:
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3906
diff changeset
378 await self.host.bridge.event_modify(
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
379 data_format.serialise(event_data),
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
380 self.args.item,
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
381 self.args.service,
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
382 self.args.node,
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
383 self.profile,
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
384 )
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
385 except Exception as e:
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
386 self.disp(f"can't update event data: {e}", error=True)
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
387 self.host.quit(C.EXIT_BRIDGE_ERRBACK)
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
388 else:
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
389 self.host.quit()
2244
9d49e66bdbf2 jp (event): creation/modification of main event + invitee commands are now in a "invitee" subcommand
Goffi <goffi@goffi.org>
parents: 2236
diff changeset
390
9d49e66bdbf2 jp (event): creation/modification of main event + invitee commands are now in a "invitee" subcommand
Goffi <goffi@goffi.org>
parents: 2236
diff changeset
391
9d49e66bdbf2 jp (event): creation/modification of main event + invitee commands are now in a "invitee" subcommand
Goffi <goffi@goffi.org>
parents: 2236
diff changeset
392 class InviteeGet(base.CommandBase):
9d49e66bdbf2 jp (event): creation/modification of main event + invitee commands are now in a "invitee" subcommand
Goffi <goffi@goffi.org>
parents: 2236
diff changeset
393 def __init__(self, host):
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
394 base.CommandBase.__init__(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
395 self,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
396 host,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
397 "get",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
398 use_output=C.OUTPUT_DICT,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
399 use_pubsub=True,
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
400 pubsub_flags={C.SINGLE_ITEM},
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
401 use_verbose=True,
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
402 help=_("get event attendance"),
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
403 )
2236
4b1873ce6b61 jp (event): event handling commands, first draft
Goffi <goffi@goffi.org>
parents:
diff changeset
404
4b1873ce6b61 jp (event): event handling commands, first draft
Goffi <goffi@goffi.org>
parents:
diff changeset
405 def add_parser_options(self):
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
406 self.parser.add_argument(
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
407 "-j",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
408 "--jid",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
409 action="append",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
410 dest="jids",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
411 default=[],
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4090
diff changeset
412 help=_("only retrieve RSVP from those JIDs"),
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
413 )
2236
4b1873ce6b61 jp (event): event handling commands, first draft
Goffi <goffi@goffi.org>
parents:
diff changeset
414
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
415 async def start(self):
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
416 try:
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3906
diff changeset
417 event_data_s = await self.host.bridge.event_invitee_get(
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
418 self.args.service,
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
419 self.args.node,
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
420 self.args.item,
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
421 self.args.jids,
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
422 "",
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
423 self.profile,
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
424 )
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
425 except Exception as e:
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
426 self.disp(f"can't get event data: {e}", error=True)
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
427 self.host.quit(C.EXIT_BRIDGE_ERRBACK)
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
428 else:
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
429 event_data = data_format.deserialise(event_data_s)
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
430 await self.output(event_data)
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
431 self.host.quit()
2236
4b1873ce6b61 jp (event): event handling commands, first draft
Goffi <goffi@goffi.org>
parents:
diff changeset
432
4b1873ce6b61 jp (event): event handling commands, first draft
Goffi <goffi@goffi.org>
parents:
diff changeset
433
2244
9d49e66bdbf2 jp (event): creation/modification of main event + invitee commands are now in a "invitee" subcommand
Goffi <goffi@goffi.org>
parents: 2236
diff changeset
434 class InviteeSet(base.CommandBase):
2236
4b1873ce6b61 jp (event): event handling commands, first draft
Goffi <goffi@goffi.org>
parents:
diff changeset
435 def __init__(self, host):
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
436 super(InviteeSet, self).__init__(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
437 host,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
438 "set",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
439 use_pubsub=True,
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
440 pubsub_flags={C.SINGLE_ITEM},
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
441 help=_("set event attendance"),
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
442 )
2236
4b1873ce6b61 jp (event): event handling commands, first draft
Goffi <goffi@goffi.org>
parents:
diff changeset
443
4b1873ce6b61 jp (event): event handling commands, first draft
Goffi <goffi@goffi.org>
parents:
diff changeset
444 def add_parser_options(self):
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
445 self.parser.add_argument(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
446 "-f",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
447 "--field",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
448 action="append",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
449 nargs=2,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
450 dest="fields",
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
451 metavar=("KEY", "VALUE"),
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
452 help=_("configuration field to set"),
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
453 )
2236
4b1873ce6b61 jp (event): event handling commands, first draft
Goffi <goffi@goffi.org>
parents:
diff changeset
454
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
455 async def start(self):
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
456 # TODO: handle RSVP with XMLUI in a similar way as for `ad-hoc run`
2236
4b1873ce6b61 jp (event): event handling commands, first draft
Goffi <goffi@goffi.org>
parents:
diff changeset
457 fields = dict(self.args.fields) if self.args.fields else {}
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
458 try:
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3906
diff changeset
459 self.host.bridge.event_invitee_set(
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
460 self.args.service,
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
461 self.args.node,
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
462 self.args.item,
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
463 data_format.serialise(fields),
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
464 self.profile,
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
465 )
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
466 except Exception as e:
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
467 self.disp(f"can't set event data: {e}", error=True)
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
468 self.host.quit(C.EXIT_BRIDGE_ERRBACK)
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
469 else:
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
470 self.host.quit()
2236
4b1873ce6b61 jp (event): event handling commands, first draft
Goffi <goffi@goffi.org>
parents:
diff changeset
471
4b1873ce6b61 jp (event): event handling commands, first draft
Goffi <goffi@goffi.org>
parents:
diff changeset
472
2300
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
473 class InviteesList(base.CommandBase):
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
474 def __init__(self, host):
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
475 extra_outputs = {"default": self.default_output}
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
476 base.CommandBase.__init__(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
477 self,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
478 host,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
479 "list",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
480 use_output=C.OUTPUT_DICT_DICT,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
481 extra_outputs=extra_outputs,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
482 use_pubsub=True,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
483 pubsub_flags={C.NODE},
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
484 use_verbose=True,
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
485 help=_("get event attendance"),
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
486 )
2300
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
487
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
488 def add_parser_options(self):
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
489 self.parser.add_argument(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
490 "-m",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
491 "--missing",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
492 action="store_true",
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
493 help=_("show missing people (invited but no R.S.V.P. so far)"),
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
494 )
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
495 self.parser.add_argument(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
496 "-R",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
497 "--no-rsvp",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
498 action="store_true",
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
499 help=_("don't show people which gave R.S.V.P."),
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
500 )
2300
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
501
2491
5895e4daae8c jp (event): added missing arg to _attend_filter
Goffi <goffi@goffi.org>
parents: 2483
diff changeset
502 def _attend_filter(self, attend, row):
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
503 if attend == "yes":
2300
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
504 attend_color = C.A_SUCCESS
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
505 elif attend == "no":
2300
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
506 attend_color = C.A_FAILURE
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
507 else:
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
508 attend_color = A.FG_WHITE
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
509 return A.color(attend_color, attend)
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
510
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
511 def _guests_filter(self, guests):
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
512 return "(" + str(guests) + ")" if guests else ""
2300
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
513
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
514 def default_output(self, event_data):
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
515 data = []
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
516 attendees_yes = 0
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
517 attendees_maybe = 0
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
518 attendees_no = 0
2321
c2a9da96e40b jp (event/attendee/list): added --missing to show missing people (ones who didn't replied) and --no-rsvp to hide ones who answered
Goffi <goffi@goffi.org>
parents: 2301
diff changeset
519 attendees_missing = 0
2300
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
520 guests = 0
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
521 guests_maybe = 0
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
522 for jid_, jid_data in event_data.items():
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
523 jid_data["jid"] = jid_
2300
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
524 try:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
525 guests_int = int(jid_data["guests"])
2300
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
526 except (ValueError, KeyError):
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
527 pass
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
528 attend = jid_data.get("attend", "")
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
529 if attend == "yes":
2300
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
530 attendees_yes += 1
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
531 guests += guests_int
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
532 elif attend == "maybe":
2300
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
533 attendees_maybe += 1
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
534 guests_maybe += guests_int
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
535 elif attend == "no":
2300
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
536 attendees_no += 1
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
537 jid_data["guests"] = ""
2321
c2a9da96e40b jp (event/attendee/list): added --missing to show missing people (ones who didn't replied) and --no-rsvp to hide ones who answered
Goffi <goffi@goffi.org>
parents: 2301
diff changeset
538 else:
c2a9da96e40b jp (event/attendee/list): added --missing to show missing people (ones who didn't replied) and --no-rsvp to hide ones who answered
Goffi <goffi@goffi.org>
parents: 2301
diff changeset
539 attendees_missing += 1
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
540 jid_data["guests"] = ""
2300
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
541 data.append(jid_data)
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
542
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
543 show_table = OUTPUT_OPT_TABLE in self.args.output_opts
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
544
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3906
diff changeset
545 table = common.Table.from_list_dict(
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
546 self.host,
2300
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
547 data,
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
548 ("nick",) + (("jid",) if self.host.verbosity else ()) + ("attend", "guests"),
2300
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
549 headers=None,
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
550 filters={
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
551 "nick": A.color(C.A_HEADER, "{}" if show_table else "{} "),
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
552 "jid": "{}" if show_table else "{} ",
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
553 "attend": self._attend_filter,
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
554 "guests": "{}" if show_table else self._guests_filter,
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
555 },
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
556 defaults={"nick": "", "attend": "", "guests": 1},
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
557 )
2300
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
558 if show_table:
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
559 table.display()
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
560 else:
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
561 table.display_blank(show_header=False, col_sep="")
2300
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
562
2321
c2a9da96e40b jp (event/attendee/list): added --missing to show missing people (ones who didn't replied) and --no-rsvp to hide ones who answered
Goffi <goffi@goffi.org>
parents: 2301
diff changeset
563 if not self.args.no_rsvp:
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
564 self.disp("")
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
565 self.disp(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
566 A.color(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
567 C.A_SUBHEADER,
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
568 _("Attendees: "),
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
569 A.RESET,
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
570 str(len(data)),
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
571 _(" ("),
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
572 C.A_SUCCESS,
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
573 _("yes: "),
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
574 str(attendees_yes),
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
575 A.FG_WHITE,
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
576 _(", maybe: "),
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
577 str(attendees_maybe),
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
578 ", ",
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
579 C.A_FAILURE,
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
580 _("no: "),
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
581 str(attendees_no),
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
582 A.RESET,
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
583 ")",
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
584 )
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
585 )
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
586 self.disp(
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
587 A.color(C.A_SUBHEADER, _("confirmed guests: "), A.RESET, str(guests))
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
588 )
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
589 self.disp(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
590 A.color(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
591 C.A_SUBHEADER,
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
592 _("unconfirmed guests: "),
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
593 A.RESET,
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
594 str(guests_maybe),
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
595 )
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
596 )
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
597 self.disp(
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
598 A.color(C.A_SUBHEADER, _("total: "), A.RESET, str(guests + guests_maybe))
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
599 )
2321
c2a9da96e40b jp (event/attendee/list): added --missing to show missing people (ones who didn't replied) and --no-rsvp to hide ones who answered
Goffi <goffi@goffi.org>
parents: 2301
diff changeset
600 if attendees_missing:
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
601 self.disp("")
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
602 self.disp(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
603 A.color(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
604 C.A_SUBHEADER,
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
605 _("missing people (no reply): "),
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
606 A.RESET,
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
607 str(attendees_missing),
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
608 )
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
609 )
2300
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
610
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
611 async def start(self):
2321
c2a9da96e40b jp (event/attendee/list): added --missing to show missing people (ones who didn't replied) and --no-rsvp to hide ones who answered
Goffi <goffi@goffi.org>
parents: 2301
diff changeset
612 if self.args.no_rsvp and not self.args.missing:
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
613 self.parser.error(_("you need to use --missing if you use --no-rsvp"))
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
614 if not self.args.missing:
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
615 prefilled = {}
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
616 else:
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
617 # we get prefilled data with all people
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
618 try:
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3906
diff changeset
619 affiliations = await self.host.bridge.ps_node_affiliations_get(
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
620 self.args.service,
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
621 self.args.node,
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
622 self.profile,
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
623 )
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
624 except Exception as e:
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
625 self.disp(f"can't get node affiliations: {e}", error=True)
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
626 self.host.quit(C.EXIT_BRIDGE_ERRBACK)
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
627 else:
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
628 # we fill all affiliations with empty data, answered one will be filled
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
629 # below. We only consider people with "publisher" affiliation as invited,
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
630 # creators are not, and members can just observe
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
631 prefilled = {
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
632 jid_: {}
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
633 for jid_, affiliation in affiliations.items()
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
634 if affiliation in ("publisher",)
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
635 }
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
636
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
637 try:
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3906
diff changeset
638 event_data = await self.host.bridge.event_invitees_list(
2321
c2a9da96e40b jp (event/attendee/list): added --missing to show missing people (ones who didn't replied) and --no-rsvp to hide ones who answered
Goffi <goffi@goffi.org>
parents: 2301
diff changeset
639 self.args.service,
c2a9da96e40b jp (event/attendee/list): added --missing to show missing people (ones who didn't replied) and --no-rsvp to hide ones who answered
Goffi <goffi@goffi.org>
parents: 2301
diff changeset
640 self.args.node,
c2a9da96e40b jp (event/attendee/list): added --missing to show missing people (ones who didn't replied) and --no-rsvp to hide ones who answered
Goffi <goffi@goffi.org>
parents: 2301
diff changeset
641 self.profile,
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
642 )
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
643 except Exception as e:
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
644 self.disp(f"can't get event data: {e}", error=True)
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
645 self.host.quit(C.EXIT_BRIDGE_ERRBACK)
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
646
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
647 # we fill nicknames and keep only requested people
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
648
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
649 if self.args.no_rsvp:
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
650 for jid_ in event_data:
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
651 # if there is a jid in event_data it must be there in prefilled too
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
652 # otherwie somebody is not on the invitees list
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
653 try:
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
654 del prefilled[jid_]
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
655 except KeyError:
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
656 self.disp(
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
657 A.color(
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
658 C.A_WARNING,
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
659 f"We got a RSVP from somebody who was not in invitees "
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
660 f"list: {jid_}",
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
661 ),
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
662 error=True,
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
663 )
2321
c2a9da96e40b jp (event/attendee/list): added --missing to show missing people (ones who didn't replied) and --no-rsvp to hide ones who answered
Goffi <goffi@goffi.org>
parents: 2301
diff changeset
664 else:
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
665 # we replace empty dicts for existing people with R.S.V.P. data
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
666 prefilled.update(event_data)
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
667
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
668 # we get nicknames for everybody, make it easier for organisers
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
669 for jid_, data in prefilled.items():
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3906
diff changeset
670 id_data = await self.host.bridge.identity_get(jid_, [], True, self.profile)
3254
6cf4bd6972c2 core, frontends: avatar refactoring:
Goffi <goffi@goffi.org>
parents: 3137
diff changeset
671 id_data = data_format.deserialise(id_data)
3568
04283582966f core, frontends: fix invalid translatable strings.
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
672 data["nick"] = id_data["nicknames"][0]
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
673
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
674 await self.output(prefilled)
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
675 self.host.quit()
2321
c2a9da96e40b jp (event/attendee/list): added --missing to show missing people (ones who didn't replied) and --no-rsvp to hide ones who answered
Goffi <goffi@goffi.org>
parents: 2301
diff changeset
676
2300
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
677
2288
f4d8d83a50e2 jp (event/invitee/invite): command to use new eventInvite backend method
Goffi <goffi@goffi.org>
parents: 2284
diff changeset
678 class InviteeInvite(base.CommandBase):
f4d8d83a50e2 jp (event/invitee/invite): command to use new eventInvite backend method
Goffi <goffi@goffi.org>
parents: 2284
diff changeset
679 def __init__(self, host):
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
680 base.CommandBase.__init__(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
681 self,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
682 host,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
683 "invite",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
684 use_pubsub=True,
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
685 pubsub_flags={C.NODE, C.SINGLE_ITEM},
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
686 help=_("invite someone to the event through email"),
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
687 )
2288
f4d8d83a50e2 jp (event/invitee/invite): command to use new eventInvite backend method
Goffi <goffi@goffi.org>
parents: 2284
diff changeset
688
f4d8d83a50e2 jp (event/invitee/invite): command to use new eventInvite backend method
Goffi <goffi@goffi.org>
parents: 2284
diff changeset
689 def add_parser_options(self):
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
690 self.parser.add_argument(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
691 "-e",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
692 "--email",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
693 action="append",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
694 default=[],
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
695 help="email(s) to send the invitation to",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
696 )
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
697 self.parser.add_argument(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
698 "-N",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
699 "--name",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
700 default="",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
701 help="name of the invitee",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
702 )
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
703 self.parser.add_argument(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
704 "-H",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
705 "--host-name",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
706 default="",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
707 help="name of the host",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
708 )
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
709 self.parser.add_argument(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
710 "-l",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
711 "--lang",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
712 default="",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
713 help="main language spoken by the invitee",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
714 )
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
715 self.parser.add_argument(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
716 "-U",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
717 "--url-template",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
718 default="",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
719 help="template to construct the URL",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
720 )
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
721 self.parser.add_argument(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
722 "-S",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
723 "--subject",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
724 default="",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
725 help="subject of the invitation email (default: generic subject)",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
726 )
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
727 self.parser.add_argument(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
728 "-b",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
729 "--body",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
730 default="",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
731 help="body of the invitation email (default: generic body)",
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
732 )
2288
f4d8d83a50e2 jp (event/invitee/invite): command to use new eventInvite backend method
Goffi <goffi@goffi.org>
parents: 2284
diff changeset
733
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
734 async def start(self):
2291
c05000d00dbb plugin events, invitations + jp (event/create, invitation/invitee/invite): several emails addresses can now be specified for a single invitation:
Goffi <goffi@goffi.org>
parents: 2288
diff changeset
735 email = self.args.email[0] if self.args.email else None
c05000d00dbb plugin events, invitations + jp (event/create, invitation/invitee/invite): several emails addresses can now be specified for a single invitation:
Goffi <goffi@goffi.org>
parents: 2288
diff changeset
736 emails_extra = self.args.email[1:]
2288
f4d8d83a50e2 jp (event/invitee/invite): command to use new eventInvite backend method
Goffi <goffi@goffi.org>
parents: 2284
diff changeset
737
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
738 try:
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3906
diff changeset
739 await self.host.bridge.event_invite_by_email(
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
740 self.args.service,
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
741 self.args.node,
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
742 self.args.item,
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
743 email,
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
744 emails_extra,
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
745 self.args.name,
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
746 self.args.host_name,
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
747 self.args.lang,
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
748 self.args.url_template,
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
749 self.args.subject,
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
750 self.args.body,
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
751 self.args.profile,
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
752 )
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
753 except Exception as e:
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
754 self.disp(f"can't create invitation: {e}", error=True)
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
755 self.host.quit(C.EXIT_BRIDGE_ERRBACK)
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
756 else:
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
757 self.host.quit()
2288
f4d8d83a50e2 jp (event/invitee/invite): command to use new eventInvite backend method
Goffi <goffi@goffi.org>
parents: 2284
diff changeset
758
f4d8d83a50e2 jp (event/invitee/invite): command to use new eventInvite backend method
Goffi <goffi@goffi.org>
parents: 2284
diff changeset
759
2244
9d49e66bdbf2 jp (event): creation/modification of main event + invitee commands are now in a "invitee" subcommand
Goffi <goffi@goffi.org>
parents: 2236
diff changeset
760 class Invitee(base.CommandBase):
2300
173d56315529 jp (event/invitee): added list command to get R.S.V.P. :
Goffi <goffi@goffi.org>
parents: 2299
diff changeset
761 subcommands = (InviteeGet, InviteeSet, InviteesList, InviteeInvite)
2244
9d49e66bdbf2 jp (event): creation/modification of main event + invitee commands are now in a "invitee" subcommand
Goffi <goffi@goffi.org>
parents: 2236
diff changeset
762
9d49e66bdbf2 jp (event): creation/modification of main event + invitee commands are now in a "invitee" subcommand
Goffi <goffi@goffi.org>
parents: 2236
diff changeset
763 def __init__(self, host):
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
764 super(Invitee, self).__init__(
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 2910
diff changeset
765 host, "invitee", use_profile=False, help=_("manage invities")
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
766 )
2244
9d49e66bdbf2 jp (event): creation/modification of main event + invitee commands are now in a "invitee" subcommand
Goffi <goffi@goffi.org>
parents: 2236
diff changeset
767
9d49e66bdbf2 jp (event): creation/modification of main event + invitee commands are now in a "invitee" subcommand
Goffi <goffi@goffi.org>
parents: 2236
diff changeset
768
2236
4b1873ce6b61 jp (event): event handling commands, first draft
Goffi <goffi@goffi.org>
parents:
diff changeset
769 class Event(base.CommandBase):
3906
d8baf92cb921 cli (event): update commands following changes in events:
Goffi <goffi@goffi.org>
parents: 3568
diff changeset
770 subcommands = (Get, Create, Modify, Invitee)
2236
4b1873ce6b61 jp (event): event handling commands, first draft
Goffi <goffi@goffi.org>
parents:
diff changeset
771
4b1873ce6b61 jp (event): event handling commands, first draft
Goffi <goffi@goffi.org>
parents:
diff changeset
772 def __init__(self, host):
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
773 super(Event, self).__init__(
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
774 host, "event", use_profile=False, help=_("event management")
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2616
diff changeset
775 )