annotate libervia/backend/plugins/plugin_misc_email_invitation.py @ 4332:71c939e34ca6

XEP-0373 (OX): Adjust to gpgme updates: generate with explicit algorithm and subkeys
author Syndace <me@syndace.dev>
date Sat, 13 Jul 2024 18:28:28 +0200
parents 0d7bb4df2343
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 3007
diff changeset
1 #!/usr/bin/env python3
3137
559a625a236b fixed shebangs
Goffi <goffi@goffi.org>
parents: 3136
diff changeset
2
3323
44a9438d6608 plugin email invitation: simple invitation creation
Goffi <goffi@goffi.org>
parents: 3253
diff changeset
3 # SàT plugin for sending invitations by email
3479
be6d91572633 date update
Goffi <goffi@goffi.org>
parents: 3337
diff changeset
4 # Copyright (C) 2009-2021 Jérôme Poisson (goffi@goffi.org)
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
5
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
6 # This program is free software: you can redistribute it and/or modify
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
7 # it under the terms of the GNU Affero General Public License as published by
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
8 # the Free Software Foundation, either version 3 of the License, or
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
9 # (at your option) any later version.
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
10
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
11 # This program is distributed in the hope that it will be useful,
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
14 # GNU Affero General Public License for more details.
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
15
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
16 # You should have received a copy of the GNU Affero General Public License
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
17 # along with this program. If not, see <http://www.gnu.org/licenses/>.
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
18
2909
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
19 import shortuuid
3700
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
20 from typing import Optional
2909
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
21 from twisted.internet import defer
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
22 from twisted.words.protocols.jabber import jid
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
23 from twisted.words.protocols.jabber import error
3337
932cf08dfdc3 plugin email invitation: new `invitationDelete` method
Goffi <goffi@goffi.org>
parents: 3336
diff changeset
24 from twisted.words.protocols.jabber import sasl
4071
4b842c1fb686 refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents: 4037
diff changeset
25 from libervia.backend.core.i18n import _, D_
4b842c1fb686 refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents: 4037
diff changeset
26 from libervia.backend.core.constants import Const as C
4b842c1fb686 refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents: 4037
diff changeset
27 from libervia.backend.core import exceptions
4b842c1fb686 refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents: 4037
diff changeset
28 from libervia.backend.core.log import getLogger
4b842c1fb686 refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents: 4037
diff changeset
29 from libervia.backend.tools import utils
4b842c1fb686 refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents: 4037
diff changeset
30 from libervia.backend.tools.common import data_format
4b842c1fb686 refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents: 4037
diff changeset
31 from libervia.backend.memory import persistent
4b842c1fb686 refactoring: renamed `sat` package to `libervia.backend`
Goffi <goffi@goffi.org>
parents: 4037
diff changeset
32 from libervia.backend.tools.common import email as sat_email
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
33
2909
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
34 log = getLogger(__name__)
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
35
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
36
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
37 PLUGIN_INFO = {
3335
83bc9d46a417 plugin email invitation: fixed create/simpleCreate + invitee_name:
Goffi <goffi@goffi.org>
parents: 3323
diff changeset
38 C.PI_NAME: "Email Invitations",
2912
a3faf1c86596 plugin events: refactored invitation and personal lists logic:
Goffi <goffi@goffi.org>
parents: 2909
diff changeset
39 C.PI_IMPORT_NAME: "EMAIL_INVITATION",
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
40 C.PI_TYPE: C.PLUG_TYPE_MISC,
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
41 C.PI_DEPENDENCIES: ["XEP-0077"],
2256
61e836cc9512 plugin invitations: name is now registered as nickname on XMPP server thanks to plugin identity
Goffi <goffi@goffi.org>
parents: 2255
diff changeset
42 C.PI_RECOMMENDATIONS: ["IDENTITY"],
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
43 C.PI_MAIN: "InvitationsPlugin",
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
44 C.PI_HANDLER: "no",
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
45 C.PI_DESCRIPTION: _("""invitation of people without XMPP account"""),
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
46 }
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
47
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
48
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
49 SUFFIX_MAX = 5
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 3007
diff changeset
50 INVITEE_PROFILE_TPL = "guest@@{uuid}"
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
51 KEY_ID = "id"
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
52 KEY_JID = "jid"
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
53 KEY_CREATED = "created"
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
54 KEY_LAST_CONNECTION = "last_connection"
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
55 KEY_GUEST_PROFILE = "guest_profile"
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
56 KEY_PASSWORD = "password"
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
57 KEY_EMAILS_EXTRA = "emails_extra"
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
58 EXTRA_RESERVED = {
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
59 KEY_ID,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
60 KEY_JID,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
61 KEY_CREATED,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
62 "jid_",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
63 "jid",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
64 KEY_LAST_CONNECTION,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
65 KEY_GUEST_PROFILE,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
66 KEY_PASSWORD,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
67 KEY_EMAILS_EXTRA,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
68 }
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 3007
diff changeset
69 DEFAULT_SUBJECT = D_("You have been invited by {host_name} to {app_name}")
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
70 DEFAULT_BODY = D_(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
71 """Hello {name}!
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
72
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
73 You have received an invitation from {host_name} to participate to "{app_name}".
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
74 To join, you just have to click on the following URL:
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
75 {url}
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
76
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
77 Please note that this URL should not be shared with anybody!
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
78 If you want more details on {app_name}, you can check {app_url}.
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
79
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
80 Welcome!
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
81 """
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
82 )
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
83
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
84
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
85 class InvitationsPlugin(object):
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
86
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
87 def __init__(self, host):
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 3007
diff changeset
88 log.info(_("plugin Invitations initialization"))
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
89 self.host = host
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
90 self.invitations = persistent.LazyPersistentBinaryDict("invitations")
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
91 host.bridge.add_method(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
92 "invitation_create",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
93 ".plugin",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
94 in_sign="sasssssssssa{ss}s",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
95 out_sign="a{ss}",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
96 method=self._create,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
97 async_=True,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
98 )
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
99 host.bridge.add_method(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
100 "invitation_get",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
101 ".plugin",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
102 in_sign="s",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
103 out_sign="a{ss}",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
104 method=self.get,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
105 async_=True,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
106 )
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
107 host.bridge.add_method(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
108 "invitation_delete",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
109 ".plugin",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
110 in_sign="s",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
111 out_sign="",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
112 method=self._delete,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
113 async_=True,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
114 )
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
115 host.bridge.add_method(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
116 "invitation_modify",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
117 ".plugin",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
118 in_sign="sa{ss}b",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
119 out_sign="",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
120 method=self._modify,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
121 async_=True,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
122 )
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
123 host.bridge.add_method(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
124 "invitation_list",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
125 ".plugin",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
126 in_sign="s",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
127 out_sign="a{sa{ss}}",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
128 method=self._list,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
129 async_=True,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
130 )
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
131 host.bridge.add_method(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
132 "invitation_simple_create",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
133 ".plugin",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
134 in_sign="sssss",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
135 out_sign="a{ss}",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
136 method=self._simple_create,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
137 async_=True,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
138 )
2212
eaf2467d19ce plugin invitations: added getInvitation method, it return invitation data and raise an error if it is not found
Goffi <goffi@goffi.org>
parents: 2211
diff changeset
139
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3700
diff changeset
140 def check_extra(self, extra):
2219
77a3d0a28642 plugin invitations: added modify method (+ bridge) and fixed email setting in extra
Goffi <goffi@goffi.org>
parents: 2212
diff changeset
141 if EXTRA_RESERVED.intersection(extra):
2909
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
142 raise ValueError(
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
143 _(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
144 "You can't use following key(s) in extra, they are reserved: {}"
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
145 ).format(", ".join(EXTRA_RESERVED.intersection(extra)))
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
146 )
2219
77a3d0a28642 plugin invitations: added modify method (+ bridge) and fixed email setting in extra
Goffi <goffi@goffi.org>
parents: 2212
diff changeset
147
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
148 def _create(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
149 self,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
150 email="",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
151 emails_extra=None,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
152 jid_="",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
153 password="",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
154 name="",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
155 host_name="",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
156 language="",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
157 url_template="",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
158 message_subject="",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
159 message_body="",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
160 extra=None,
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
161 profile="",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
162 ):
2909
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
163 # XXX: we don't use **kwargs here to keep arguments name for introspection with
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
164 # D-Bus bridge
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: 2256
diff changeset
165 if emails_extra is 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: 2256
diff changeset
166 emails_extra = []
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
167
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
168 if extra is None:
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
169 extra = {}
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
170 else:
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
171 extra = {str(k): str(v) for k, v in extra.items()}
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
172
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
173 kwargs = {"extra": extra, KEY_EMAILS_EXTRA: [str(e) for e in emails_extra]}
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: 2256
diff changeset
174
2909
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
175 # we need to be sure that values are unicode, else they won't be pickled correctly
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
176 # with D-Bus
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
177 for key in (
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
178 "jid_",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
179 "password",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
180 "name",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
181 "host_name",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
182 "email",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
183 "language",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
184 "url_template",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
185 "message_subject",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
186 "message_body",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
187 "profile",
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
188 ):
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
189 value = locals()[key]
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
190 if value:
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 3007
diff changeset
191 kwargs[key] = str(value)
3335
83bc9d46a417 plugin email invitation: fixed create/simpleCreate + invitee_name:
Goffi <goffi@goffi.org>
parents: 3323
diff changeset
192 return defer.ensureDeferred(self.create(**kwargs))
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
193
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3700
diff changeset
194 async def get_existing_invitation(self, email: Optional[str]) -> Optional[dict]:
3700
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
195 """Retrieve existing invitation with given email
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
196
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
197 @param email: check if any invitation exist with this email
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
198 @return: first found invitation, or None if nothing found
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
199 """
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
200 # FIXME: This method is highly inefficient, it get all invitations and check them
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
201 # one by one, this is just a temporary way to avoid creating creating new accounts
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
202 # for an existing email. A better way will be available with Libervia 0.9.
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
203 # TODO: use a better way to check existing invitations
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
204
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
205 if email is None:
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
206 return None
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
207 all_invitations = await self.invitations.all()
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
208 for id_, invitation in all_invitations.items():
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
209 if invitation.get("email") == email:
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
210 invitation[KEY_ID] = id_
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
211 return invitation
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
212
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3700
diff changeset
213 async def _create_account_and_profile(
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
214 self, id_: str, kwargs: dict, extra: dict
3700
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
215 ) -> None:
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
216 """Create XMPP account and Libervia profile for guest"""
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
217 ## XMPP account creation
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
218 password = kwargs.pop("password", None)
3700
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
219 if password is None:
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
220 password = utils.generate_password()
3700
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
221 assert password
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
222 # XXX: password is here saved in clear in database
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
223 # it is needed for invitation as the same password is used for profile
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
224 # and SàT need to be able to automatically open the profile with the uuid
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
225 # FIXME: we could add an extra encryption key which would be used with the
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
226 # uuid when the invitee is connecting (e.g. with URL). This key would
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
227 # not be saved and could be used to encrypt profile password.
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
228 extra[KEY_PASSWORD] = password
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
229
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
230 jid_ = kwargs.pop("jid_", None)
3700
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
231 if not jid_:
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
232 domain = self.host.memory.config_get(None, "xmpp_domain")
3700
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
233 if not domain:
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
234 # TODO: fallback to profile's domain
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
235 raise ValueError(_("You need to specify xmpp_domain in sat.conf"))
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
236 jid_ = "invitation-{uuid}@{domain}".format(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
237 uuid=shortuuid.uuid(), domain=domain
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
238 )
3700
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
239 jid_ = jid.JID(jid_)
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
240 extra[KEY_JID] = jid_.full()
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
241
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
242 if jid_.user:
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
243 # we don't register account if there is no user as anonymous login is then
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
244 # used
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
245 try:
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
246 await self.host.plugins["XEP-0077"].register_new_account(jid_, password)
3700
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
247 except error.StanzaError as e:
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
248 prefix = jid_.user
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
249 idx = 0
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
250 while e.condition == "conflict":
3700
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
251 if idx >= SUFFIX_MAX:
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
252 raise exceptions.ConflictError(_("Can't create XMPP account"))
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
253 jid_.user = prefix + "_" + str(idx)
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
254 log.info(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
255 _(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
256 "requested jid already exists, trying with {}".format(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
257 jid_.full()
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
258 )
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
259 )
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
260 )
3700
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
261 try:
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
262 await self.host.plugins["XEP-0077"].register_new_account(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
263 jid_, password
3700
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
264 )
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
265 except error.StanzaError:
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
266 idx += 1
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
267 else:
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
268 break
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
269 if e.condition != "conflict":
3700
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
270 raise e
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
271
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
272 log.info(_("account {jid_} created").format(jid_=jid_.full()))
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
273
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
274 ## profile creation
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
275
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
276 extra[KEY_GUEST_PROFILE] = guest_profile = INVITEE_PROFILE_TPL.format(uuid=id_)
3700
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
277 # profile creation should not fail as we generate unique name ourselves
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3700
diff changeset
278 await self.host.memory.create_profile(guest_profile, password)
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3700
diff changeset
279 await self.host.memory.start_session(password, guest_profile)
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
280 await self.host.memory.param_set(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
281 "JabberID", jid_.full(), "Connection", profile_key=guest_profile
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
282 )
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
283 await self.host.memory.param_set(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
284 "Password", password, "Connection", profile_key=guest_profile
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
285 )
3700
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
286
3335
83bc9d46a417 plugin email invitation: fixed create/simpleCreate + invitee_name:
Goffi <goffi@goffi.org>
parents: 3323
diff changeset
287 async def create(self, **kwargs):
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 3007
diff changeset
288 r"""Create an invitation
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
289
2909
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
290 This will create an XMPP account and a profile, and use a UUID to retrieve them.
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
291 The profile is automatically generated in the form guest@@[UUID], this way they
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
292 can be retrieved easily
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
293 **kwargs: keywords arguments which can have the following keys, unset values are
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
294 equivalent to None:
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
295 jid_(jid.JID, None): jid to use for invitation, the jid will be created using
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
296 XEP-0077
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
297 if the jid has no user part, an anonymous account will be used (no XMPP
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
298 account created in this case)
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
299 if None, automatically generate an account name (in the form
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
300 "invitation-[random UUID]@domain.tld") (note that this UUID is not the
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
301 same as the invitation one, as jid can be used publicly (leaking the
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
302 UUID), and invitation UUID give access to account.
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
303 in case of conflict, a suffix number is added to the account until a free
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
304 one if found (with a failure if SUFFIX_MAX is reached)
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
305 password(unicode, None): password to use (will be used for XMPP account and
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
306 profile)
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
307 None to automatically generate one
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
308 name(unicode, None): name of the invitee
2256
61e836cc9512 plugin invitations: name is now registered as nickname on XMPP server thanks to plugin identity
Goffi <goffi@goffi.org>
parents: 2255
diff changeset
309 will be set as profile identity if present
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
310 host_name(unicode, None): name of the host
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
311 email(unicode, None): email to send the invitation to
2909
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
312 if None, no invitation email is sent, you can still associate email using
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
313 extra
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
314 if email is used, extra can't have "email" key
2909
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
315 language(unicode): language of the invitee (used notabily to translate the
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
316 invitation)
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
317 TODO: not used yet
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
318 url_template(unicode, None): template to use to construct the invitation URL
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
319 use {uuid} as a placeholder for identifier
2909
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
320 use None if you don't want to include URL (or if it is already specified
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
321 in custom message)
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
322 /!\ you must put full URL, don't forget https://
2909
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
323 /!\ the URL will give access to the invitee account, you should warn in
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
324 message to not publish it publicly
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
325 message_subject(unicode, None): customised message body for the invitation
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
326 email
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
327 None to use default subject
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
328 uses the same substitution as for message_body
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
329 message_body(unicode, None): customised message body for the invitation email
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
330 None to use default body
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
331 use {name} as a place holder for invitee name
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
332 use {url} as a placeholder for the invitation url
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
333 use {uuid} as a placeholder for the identifier
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
334 use {app_name} as a placeholder for this software name
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
335 use {app_url} as a placeholder for this software official website
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
336 use {profile} as a placeholder for host's profile
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
337 use {host_name} as a placeholder for host's name
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
338 extra(dict, None): extra data to associate with the invitee
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
339 some keys are reserved:
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
340 - created (creation date)
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
341 if email argument is used, "email" key can't be used
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
342 profile(unicode, None): profile of the host (person who is inviting)
2211
df115e4a36c7 plugin invitations: invitation id and invitee jid are now added to return dict in invitationCreate, bridge signature has changed too
Goffi <goffi@goffi.org>
parents: 2210
diff changeset
343 @return (dict[unicode, unicode]): dictionary with:
df115e4a36c7 plugin invitations: invitation id and invitee jid are now added to return dict in invitationCreate, bridge signature has changed too
Goffi <goffi@goffi.org>
parents: 2210
diff changeset
344 - UUID associated with the invitee (key: id)
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
345 - filled extra dictionary, as saved in the databae
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
346 """
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
347 ## initial checks
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
348 extra = kwargs.pop("extra", {})
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
349 if set(kwargs).intersection(extra):
2909
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
350 raise ValueError(
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 3007
diff changeset
351 _("You can't use following key(s) in both args and extra: {}").format(
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
352 ", ".join(set(kwargs).intersection(extra))
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
353 )
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
354 )
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
355
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3700
diff changeset
356 self.check_extra(extra)
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
357
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
358 email = kwargs.pop("email", None)
3700
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
359
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3700
diff changeset
360 existing = await self.get_existing_invitation(email)
3700
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
361 if existing is not None:
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
362 log.info(f"There is already an invitation for {email!r}")
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
363 extra.update(existing)
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
364 del extra[KEY_ID]
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
365
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
366 emails_extra = kwargs.pop("emails_extra", [])
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: 2256
diff changeset
367 if not email and emails_extra:
2909
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
368 raise ValueError(
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
369 _("You need to provide a main email address before using emails_extra")
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
370 )
2255
ba613d32ca60 plugin invitations: doesn't raise an exception anymore if url_template is not set while email is not requested
Goffi <goffi@goffi.org>
parents: 2241
diff changeset
371
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
372 if (
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
373 email is not None
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
374 and not "url_template" in kwargs
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
375 and not "message_body" in kwargs
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
376 ):
2909
90146552cde5 core (memory), plugin XEP-0329, plugin invitation: minor style improvments
Goffi <goffi@goffi.org>
parents: 2771
diff changeset
377 raise ValueError(
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
378 _("You need to provide url_template if you use default message body")
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
379 )
2210
f8d61592f1fc plugin invitations: raise ValueError if url_template and message_body are both not specified
Goffi <goffi@goffi.org>
parents: 2208
diff changeset
380
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
381 ## uuid
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 3007
diff changeset
382 log.info(_("creating an invitation"))
3700
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
383 id_ = existing[KEY_ID] if existing else str(shortuuid.uuid())
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
384
3700
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
385 if existing is None:
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3700
diff changeset
386 await self._create_account_and_profile(id_, kwargs, extra)
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
387
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
388 profile = kwargs.pop("profile", None)
3700
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
389 guest_profile = extra[KEY_GUEST_PROFILE]
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
390 jid_ = jid.JID(extra[KEY_JID])
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
391
3700
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
392 ## identity
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
393 name = kwargs.pop("name", None)
3700
cfc06915de15 plugin email invitations: re-use existing invitation for a given email:
Goffi <goffi@goffi.org>
parents: 3479
diff changeset
394 password = extra[KEY_PASSWORD]
2256
61e836cc9512 plugin invitations: name is now registered as nickname on XMPP server thanks to plugin identity
Goffi <goffi@goffi.org>
parents: 2255
diff changeset
395 if name is not None:
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
396 extra["name"] = name
2256
61e836cc9512 plugin invitations: name is now registered as nickname on XMPP server thanks to plugin identity
Goffi <goffi@goffi.org>
parents: 2255
diff changeset
397 try:
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
398 id_plugin = self.host.plugins["IDENTITY"]
2256
61e836cc9512 plugin invitations: name is now registered as nickname on XMPP server thanks to plugin identity
Goffi <goffi@goffi.org>
parents: 2255
diff changeset
399 except KeyError:
61e836cc9512 plugin invitations: name is now registered as nickname on XMPP server thanks to plugin identity
Goffi <goffi@goffi.org>
parents: 2255
diff changeset
400 pass
61e836cc9512 plugin invitations: name is now registered as nickname on XMPP server thanks to plugin identity
Goffi <goffi@goffi.org>
parents: 2255
diff changeset
401 else:
3335
83bc9d46a417 plugin email invitation: fixed create/simpleCreate + invitee_name:
Goffi <goffi@goffi.org>
parents: 3323
diff changeset
402 await self.host.connect(guest_profile, password)
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3700
diff changeset
403 guest_client = self.host.get_client(guest_profile)
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
404 await id_plugin.set_identity(guest_client, {"nicknames": [name]})
3335
83bc9d46a417 plugin email invitation: fixed create/simpleCreate + invitee_name:
Goffi <goffi@goffi.org>
parents: 3323
diff changeset
405 await self.host.disconnect(guest_profile)
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
406
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
407 ## email
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
408 language = kwargs.pop("language", None)
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
409 if language is not None:
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
410 extra["language"] = language.strip()
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
411
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
412 if email is not None:
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
413 extra["email"] = email
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: 2256
diff changeset
414 data_format.iter2dict(KEY_EMAILS_EXTRA, extra)
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
415 url_template = kwargs.pop("url_template", "")
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
416 format_args = {"uuid": id_, "app_name": C.APP_NAME, "app_url": C.APP_URL}
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
417
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
418 if name is None:
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
419 format_args["name"] = email
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
420 else:
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
421 format_args["name"] = name
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
422
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
423 if profile is None:
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
424 format_args["profile"] = ""
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
425 else:
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
426 format_args["profile"] = extra["profile"] = profile
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
427
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
428 host_name = kwargs.pop("host_name", None)
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
429 if host_name is None:
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
430 format_args["host_name"] = profile or _("somebody")
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
431 else:
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
432 format_args["host_name"] = extra["host_name"] = host_name
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
433
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
434 invite_url = url_template.format(**format_args)
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
435 format_args["url"] = invite_url
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
436
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3700
diff changeset
437 await sat_email.send_email(
3040
fee60f17ebac jp: jp asyncio port:
Goffi <goffi@goffi.org>
parents: 3028
diff changeset
438 self.host.memory.config,
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: 2256
diff changeset
439 [email] + emails_extra,
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
440 (kwargs.pop("message_subject", None) or DEFAULT_SUBJECT).format(
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
441 **format_args
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
442 ),
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
443 (kwargs.pop("message_body", None) or DEFAULT_BODY).format(**format_args),
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
444 )
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
445
3336
e38ddaf477bd plugin email invitation: guests are now automatically added to host roster in `guests` group
Goffi <goffi@goffi.org>
parents: 3335
diff changeset
446 ## roster
e38ddaf477bd plugin email invitation: guests are now automatically added to host roster in `guests` group
Goffi <goffi@goffi.org>
parents: 3335
diff changeset
447
e38ddaf477bd plugin email invitation: guests are now automatically added to host roster in `guests` group
Goffi <goffi@goffi.org>
parents: 3335
diff changeset
448 # we automatically add guest to host roster (if host is specified)
e38ddaf477bd plugin email invitation: guests are now automatically added to host roster in `guests` group
Goffi <goffi@goffi.org>
parents: 3335
diff changeset
449 # FIXME: a parameter to disable auto roster adding would be nice
e38ddaf477bd plugin email invitation: guests are now automatically added to host roster in `guests` group
Goffi <goffi@goffi.org>
parents: 3335
diff changeset
450 if profile is not None:
e38ddaf477bd plugin email invitation: guests are now automatically added to host roster in `guests` group
Goffi <goffi@goffi.org>
parents: 3335
diff changeset
451 try:
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3700
diff changeset
452 client = self.host.get_client(profile)
3336
e38ddaf477bd plugin email invitation: guests are now automatically added to host roster in `guests` group
Goffi <goffi@goffi.org>
parents: 3335
diff changeset
453 except Exception as e:
e38ddaf477bd plugin email invitation: guests are now automatically added to host roster in `guests` group
Goffi <goffi@goffi.org>
parents: 3335
diff changeset
454 log.error(f"Can't get host profile: {profile}: {e}")
e38ddaf477bd plugin email invitation: guests are now automatically added to host roster in `guests` group
Goffi <goffi@goffi.org>
parents: 3335
diff changeset
455 else:
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
456 await self.host.contact_update(client, jid_, name, ["guests"])
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
457
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
458 if kwargs:
3028
ab2696e34d29 Python 3 port:
Goffi <goffi@goffi.org>
parents: 3007
diff changeset
459 log.warning(_("Not all arguments have been consumed: {}").format(kwargs))
2184
e0f91efa404a plugin invitations: first draft:
Goffi <goffi@goffi.org>
parents:
diff changeset
460
3335
83bc9d46a417 plugin email invitation: fixed create/simpleCreate + invitee_name:
Goffi <goffi@goffi.org>
parents: 3323
diff changeset
461 ## extra data saving
83bc9d46a417 plugin email invitation: fixed create/simpleCreate + invitee_name:
Goffi <goffi@goffi.org>
parents: 3323
diff changeset
462 self.invitations[id_] = extra
83bc9d46a417 plugin email invitation: fixed create/simpleCreate + invitee_name:
Goffi <goffi@goffi.org>
parents: 3323
diff changeset
463
2211
df115e4a36c7 plugin invitations: invitation id and invitee jid are now added to return dict in invitationCreate, bridge signature has changed too
Goffi <goffi@goffi.org>
parents: 2210
diff changeset
464 extra[KEY_ID] = id_
2212
eaf2467d19ce plugin invitations: added getInvitation method, it return invitation data and raise an error if it is not found
Goffi <goffi@goffi.org>
parents: 2211
diff changeset
465
3335
83bc9d46a417 plugin email invitation: fixed create/simpleCreate + invitee_name:
Goffi <goffi@goffi.org>
parents: 3323
diff changeset
466 return extra
83bc9d46a417 plugin email invitation: fixed create/simpleCreate + invitee_name:
Goffi <goffi@goffi.org>
parents: 3323
diff changeset
467
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3700
diff changeset
468 def _simple_create(self, invitee_email, invitee_name, url_template, extra_s, profile):
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3700
diff changeset
469 client = self.host.get_client(profile)
3323
44a9438d6608 plugin email invitation: simple invitation creation
Goffi <goffi@goffi.org>
parents: 3253
diff changeset
470 # FIXME: needed because python-dbus use a specific string class
44a9438d6608 plugin email invitation: simple invitation creation
Goffi <goffi@goffi.org>
parents: 3253
diff changeset
471 invitee_email = str(invitee_email)
3335
83bc9d46a417 plugin email invitation: fixed create/simpleCreate + invitee_name:
Goffi <goffi@goffi.org>
parents: 3323
diff changeset
472 invitee_name = str(invitee_name)
3323
44a9438d6608 plugin email invitation: simple invitation creation
Goffi <goffi@goffi.org>
parents: 3253
diff changeset
473 url_template = str(url_template)
44a9438d6608 plugin email invitation: simple invitation creation
Goffi <goffi@goffi.org>
parents: 3253
diff changeset
474 extra = data_format.deserialise(extra_s)
44a9438d6608 plugin email invitation: simple invitation creation
Goffi <goffi@goffi.org>
parents: 3253
diff changeset
475 d = defer.ensureDeferred(
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3700
diff changeset
476 self.simple_create(client, invitee_email, invitee_name, url_template, extra)
3323
44a9438d6608 plugin email invitation: simple invitation creation
Goffi <goffi@goffi.org>
parents: 3253
diff changeset
477 )
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
478 d.addCallback(lambda data: {k: str(v) for k, v in data.items()})
3323
44a9438d6608 plugin email invitation: simple invitation creation
Goffi <goffi@goffi.org>
parents: 3253
diff changeset
479 return d
44a9438d6608 plugin email invitation: simple invitation creation
Goffi <goffi@goffi.org>
parents: 3253
diff changeset
480
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3700
diff changeset
481 async def simple_create(
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
482 self, client, invitee_email, invitee_name, url_template, extra
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
483 ):
3323
44a9438d6608 plugin email invitation: simple invitation creation
Goffi <goffi@goffi.org>
parents: 3253
diff changeset
484 """Simplified method to invite somebody by email"""
44a9438d6608 plugin email invitation: simple invitation creation
Goffi <goffi@goffi.org>
parents: 3253
diff changeset
485 return await self.create(
3335
83bc9d46a417 plugin email invitation: fixed create/simpleCreate + invitee_name:
Goffi <goffi@goffi.org>
parents: 3323
diff changeset
486 name=invitee_name,
3323
44a9438d6608 plugin email invitation: simple invitation creation
Goffi <goffi@goffi.org>
parents: 3253
diff changeset
487 email=invitee_email,
44a9438d6608 plugin email invitation: simple invitation creation
Goffi <goffi@goffi.org>
parents: 3253
diff changeset
488 url_template=url_template,
44a9438d6608 plugin email invitation: simple invitation creation
Goffi <goffi@goffi.org>
parents: 3253
diff changeset
489 profile=client.profile,
44a9438d6608 plugin email invitation: simple invitation creation
Goffi <goffi@goffi.org>
parents: 3253
diff changeset
490 )
44a9438d6608 plugin email invitation: simple invitation creation
Goffi <goffi@goffi.org>
parents: 3253
diff changeset
491
2219
77a3d0a28642 plugin invitations: added modify method (+ bridge) and fixed email setting in extra
Goffi <goffi@goffi.org>
parents: 2212
diff changeset
492 def get(self, id_):
2212
eaf2467d19ce plugin invitations: added getInvitation method, it return invitation data and raise an error if it is not found
Goffi <goffi@goffi.org>
parents: 2211
diff changeset
493 """Retrieve invitation linked to uuid if it exists
eaf2467d19ce plugin invitations: added getInvitation method, it return invitation data and raise an error if it is not found
Goffi <goffi@goffi.org>
parents: 2211
diff changeset
494
eaf2467d19ce plugin invitations: added getInvitation method, it return invitation data and raise an error if it is not found
Goffi <goffi@goffi.org>
parents: 2211
diff changeset
495 @param id_(unicode): UUID linked to an invitation
2219
77a3d0a28642 plugin invitations: added modify method (+ bridge) and fixed email setting in extra
Goffi <goffi@goffi.org>
parents: 2212
diff changeset
496 @return (dict[unicode, unicode]): data associated to the invitation
2212
eaf2467d19ce plugin invitations: added getInvitation method, it return invitation data and raise an error if it is not found
Goffi <goffi@goffi.org>
parents: 2211
diff changeset
497 @raise KeyError: there is not invitation with this id_
eaf2467d19ce plugin invitations: added getInvitation method, it return invitation data and raise an error if it is not found
Goffi <goffi@goffi.org>
parents: 2211
diff changeset
498 """
eaf2467d19ce plugin invitations: added getInvitation method, it return invitation data and raise an error if it is not found
Goffi <goffi@goffi.org>
parents: 2211
diff changeset
499 return self.invitations[id_]
2219
77a3d0a28642 plugin invitations: added modify method (+ bridge) and fixed email setting in extra
Goffi <goffi@goffi.org>
parents: 2212
diff changeset
500
3337
932cf08dfdc3 plugin email invitation: new `invitationDelete` method
Goffi <goffi@goffi.org>
parents: 3336
diff changeset
501 def _delete(self, id_):
932cf08dfdc3 plugin email invitation: new `invitationDelete` method
Goffi <goffi@goffi.org>
parents: 3336
diff changeset
502 return defer.ensureDeferred(self.delete(id_))
932cf08dfdc3 plugin email invitation: new `invitationDelete` method
Goffi <goffi@goffi.org>
parents: 3336
diff changeset
503
932cf08dfdc3 plugin email invitation: new `invitationDelete` method
Goffi <goffi@goffi.org>
parents: 3336
diff changeset
504 async def delete(self, id_):
932cf08dfdc3 plugin email invitation: new `invitationDelete` method
Goffi <goffi@goffi.org>
parents: 3336
diff changeset
505 """Delete an invitation data and associated XMPP account"""
932cf08dfdc3 plugin email invitation: new `invitationDelete` method
Goffi <goffi@goffi.org>
parents: 3336
diff changeset
506 log.info(f"deleting invitation {id_}")
932cf08dfdc3 plugin email invitation: new `invitationDelete` method
Goffi <goffi@goffi.org>
parents: 3336
diff changeset
507 data = await self.get(id_)
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
508 guest_profile = data["guest_profile"]
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
509 password = data["password"]
3337
932cf08dfdc3 plugin email invitation: new `invitationDelete` method
Goffi <goffi@goffi.org>
parents: 3336
diff changeset
510 try:
932cf08dfdc3 plugin email invitation: new `invitationDelete` method
Goffi <goffi@goffi.org>
parents: 3336
diff changeset
511 await self.host.connect(guest_profile, password)
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3700
diff changeset
512 guest_client = self.host.get_client(guest_profile)
3337
932cf08dfdc3 plugin email invitation: new `invitationDelete` method
Goffi <goffi@goffi.org>
parents: 3336
diff changeset
513 # XXX: be extra careful to use guest_client and not client below, as this will
932cf08dfdc3 plugin email invitation: new `invitationDelete` method
Goffi <goffi@goffi.org>
parents: 3336
diff changeset
514 # delete the associated XMPP account
932cf08dfdc3 plugin email invitation: new `invitationDelete` method
Goffi <goffi@goffi.org>
parents: 3336
diff changeset
515 log.debug("deleting XMPP account")
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
516 await self.host.plugins["XEP-0077"].unregister(guest_client, None)
3337
932cf08dfdc3 plugin email invitation: new `invitationDelete` method
Goffi <goffi@goffi.org>
parents: 3336
diff changeset
517 except (error.StanzaError, sasl.SASLAuthError) as e:
932cf08dfdc3 plugin email invitation: new `invitationDelete` method
Goffi <goffi@goffi.org>
parents: 3336
diff changeset
518 log.warning(
932cf08dfdc3 plugin email invitation: new `invitationDelete` method
Goffi <goffi@goffi.org>
parents: 3336
diff changeset
519 f"Can't delete {guest_profile}'s XMPP account, maybe it as already been "
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
520 f"deleted: {e}"
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
521 )
3337
932cf08dfdc3 plugin email invitation: new `invitationDelete` method
Goffi <goffi@goffi.org>
parents: 3336
diff changeset
522 try:
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3700
diff changeset
523 await self.host.memory.profile_delete_async(guest_profile, True)
3337
932cf08dfdc3 plugin email invitation: new `invitationDelete` method
Goffi <goffi@goffi.org>
parents: 3336
diff changeset
524 except Exception as e:
932cf08dfdc3 plugin email invitation: new `invitationDelete` method
Goffi <goffi@goffi.org>
parents: 3336
diff changeset
525 log.warning(f"Can't delete guest profile {guest_profile}: {e}")
932cf08dfdc3 plugin email invitation: new `invitationDelete` method
Goffi <goffi@goffi.org>
parents: 3336
diff changeset
526 log.debug("removing guest data")
932cf08dfdc3 plugin email invitation: new `invitationDelete` method
Goffi <goffi@goffi.org>
parents: 3336
diff changeset
527 await self.invitations.adel(id_)
932cf08dfdc3 plugin email invitation: new `invitationDelete` method
Goffi <goffi@goffi.org>
parents: 3336
diff changeset
528 log.info(f"{id_} invitation has been deleted")
932cf08dfdc3 plugin email invitation: new `invitationDelete` method
Goffi <goffi@goffi.org>
parents: 3336
diff changeset
529
2219
77a3d0a28642 plugin invitations: added modify method (+ bridge) and fixed email setting in extra
Goffi <goffi@goffi.org>
parents: 2212
diff changeset
530 def _modify(self, id_, new_extra, replace):
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
531 return self.modify(id_, {str(k): str(v) for k, v in new_extra.items()}, replace)
2219
77a3d0a28642 plugin invitations: added modify method (+ bridge) and fixed email setting in extra
Goffi <goffi@goffi.org>
parents: 2212
diff changeset
532
77a3d0a28642 plugin invitations: added modify method (+ bridge) and fixed email setting in extra
Goffi <goffi@goffi.org>
parents: 2212
diff changeset
533 def modify(self, id_, new_extra, replace=False):
77a3d0a28642 plugin invitations: added modify method (+ bridge) and fixed email setting in extra
Goffi <goffi@goffi.org>
parents: 2212
diff changeset
534 """Modify invitation data
77a3d0a28642 plugin invitations: added modify method (+ bridge) and fixed email setting in extra
Goffi <goffi@goffi.org>
parents: 2212
diff changeset
535
77a3d0a28642 plugin invitations: added modify method (+ bridge) and fixed email setting in extra
Goffi <goffi@goffi.org>
parents: 2212
diff changeset
536 @param id_(unicode): UUID linked to an invitation
77a3d0a28642 plugin invitations: added modify method (+ bridge) and fixed email setting in extra
Goffi <goffi@goffi.org>
parents: 2212
diff changeset
537 @param new_extra(dict[unicode, unicode]): data to update
2241
f87b673c7d17 plugin invitations: on modify an empty value delete corresponding extra keys, and reserved keys are now ignored.
Goffi <goffi@goffi.org>
parents: 2230
diff changeset
538 empty values will be deleted if replace is True
2219
77a3d0a28642 plugin invitations: added modify method (+ bridge) and fixed email setting in extra
Goffi <goffi@goffi.org>
parents: 2212
diff changeset
539 @param replace(bool): if True replace the data
77a3d0a28642 plugin invitations: added modify method (+ bridge) and fixed email setting in extra
Goffi <goffi@goffi.org>
parents: 2212
diff changeset
540 else update them
77a3d0a28642 plugin invitations: added modify method (+ bridge) and fixed email setting in extra
Goffi <goffi@goffi.org>
parents: 2212
diff changeset
541 @raise KeyError: there is not invitation with this id_
77a3d0a28642 plugin invitations: added modify method (+ bridge) and fixed email setting in extra
Goffi <goffi@goffi.org>
parents: 2212
diff changeset
542 """
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3700
diff changeset
543 self.check_extra(new_extra)
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
544
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3700
diff changeset
545 def got_current_data(current_data):
2219
77a3d0a28642 plugin invitations: added modify method (+ bridge) and fixed email setting in extra
Goffi <goffi@goffi.org>
parents: 2212
diff changeset
546 if replace:
77a3d0a28642 plugin invitations: added modify method (+ bridge) and fixed email setting in extra
Goffi <goffi@goffi.org>
parents: 2212
diff changeset
547 new_data = new_extra
77a3d0a28642 plugin invitations: added modify method (+ bridge) and fixed email setting in extra
Goffi <goffi@goffi.org>
parents: 2212
diff changeset
548 for k in EXTRA_RESERVED:
77a3d0a28642 plugin invitations: added modify method (+ bridge) and fixed email setting in extra
Goffi <goffi@goffi.org>
parents: 2212
diff changeset
549 try:
77a3d0a28642 plugin invitations: added modify method (+ bridge) and fixed email setting in extra
Goffi <goffi@goffi.org>
parents: 2212
diff changeset
550 new_data[k] = current_data[k]
77a3d0a28642 plugin invitations: added modify method (+ bridge) and fixed email setting in extra
Goffi <goffi@goffi.org>
parents: 2212
diff changeset
551 except KeyError:
77a3d0a28642 plugin invitations: added modify method (+ bridge) and fixed email setting in extra
Goffi <goffi@goffi.org>
parents: 2212
diff changeset
552 continue
77a3d0a28642 plugin invitations: added modify method (+ bridge) and fixed email setting in extra
Goffi <goffi@goffi.org>
parents: 2212
diff changeset
553 else:
77a3d0a28642 plugin invitations: added modify method (+ bridge) and fixed email setting in extra
Goffi <goffi@goffi.org>
parents: 2212
diff changeset
554 new_data = current_data
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
555 for k, v in new_extra.items():
2241
f87b673c7d17 plugin invitations: on modify an empty value delete corresponding extra keys, and reserved keys are now ignored.
Goffi <goffi@goffi.org>
parents: 2230
diff changeset
556 if k in EXTRA_RESERVED:
3323
44a9438d6608 plugin email invitation: simple invitation creation
Goffi <goffi@goffi.org>
parents: 3253
diff changeset
557 log.warning(_("Skipping reserved key {key}").format(key=k))
2241
f87b673c7d17 plugin invitations: on modify an empty value delete corresponding extra keys, and reserved keys are now ignored.
Goffi <goffi@goffi.org>
parents: 2230
diff changeset
558 continue
f87b673c7d17 plugin invitations: on modify an empty value delete corresponding extra keys, and reserved keys are now ignored.
Goffi <goffi@goffi.org>
parents: 2230
diff changeset
559 if v:
f87b673c7d17 plugin invitations: on modify an empty value delete corresponding extra keys, and reserved keys are now ignored.
Goffi <goffi@goffi.org>
parents: 2230
diff changeset
560 new_data[k] = v
f87b673c7d17 plugin invitations: on modify an empty value delete corresponding extra keys, and reserved keys are now ignored.
Goffi <goffi@goffi.org>
parents: 2230
diff changeset
561 else:
f87b673c7d17 plugin invitations: on modify an empty value delete corresponding extra keys, and reserved keys are now ignored.
Goffi <goffi@goffi.org>
parents: 2230
diff changeset
562 try:
f87b673c7d17 plugin invitations: on modify an empty value delete corresponding extra keys, and reserved keys are now ignored.
Goffi <goffi@goffi.org>
parents: 2230
diff changeset
563 del new_data[k]
f87b673c7d17 plugin invitations: on modify an empty value delete corresponding extra keys, and reserved keys are now ignored.
Goffi <goffi@goffi.org>
parents: 2230
diff changeset
564 except KeyError:
f87b673c7d17 plugin invitations: on modify an empty value delete corresponding extra keys, and reserved keys are now ignored.
Goffi <goffi@goffi.org>
parents: 2230
diff changeset
565 pass
2219
77a3d0a28642 plugin invitations: added modify method (+ bridge) and fixed email setting in extra
Goffi <goffi@goffi.org>
parents: 2212
diff changeset
566
77a3d0a28642 plugin invitations: added modify method (+ bridge) and fixed email setting in extra
Goffi <goffi@goffi.org>
parents: 2212
diff changeset
567 self.invitations[id_] = new_data
77a3d0a28642 plugin invitations: added modify method (+ bridge) and fixed email setting in extra
Goffi <goffi@goffi.org>
parents: 2212
diff changeset
568
77a3d0a28642 plugin invitations: added modify method (+ bridge) and fixed email setting in extra
Goffi <goffi@goffi.org>
parents: 2212
diff changeset
569 d = self.invitations[id_]
4037
524856bd7b19 massive refactoring to switch from camelCase to snake_case:
Goffi <goffi@goffi.org>
parents: 3700
diff changeset
570 d.addCallback(got_current_data)
2219
77a3d0a28642 plugin invitations: added modify method (+ bridge) and fixed email setting in extra
Goffi <goffi@goffi.org>
parents: 2212
diff changeset
571 return d
2230
ebc0c1701811 plugin invitations: added invitationList command
Goffi <goffi@goffi.org>
parents: 2223
diff changeset
572
ebc0c1701811 plugin invitations: added invitationList command
Goffi <goffi@goffi.org>
parents: 2223
diff changeset
573 def _list(self, profile=C.PROF_KEY_NONE):
3335
83bc9d46a417 plugin email invitation: fixed create/simpleCreate + invitee_name:
Goffi <goffi@goffi.org>
parents: 3323
diff changeset
574 return defer.ensureDeferred(self.list(profile))
2230
ebc0c1701811 plugin invitations: added invitationList command
Goffi <goffi@goffi.org>
parents: 2223
diff changeset
575
3335
83bc9d46a417 plugin email invitation: fixed create/simpleCreate + invitee_name:
Goffi <goffi@goffi.org>
parents: 3323
diff changeset
576 async def list(self, profile=C.PROF_KEY_NONE):
2230
ebc0c1701811 plugin invitations: added invitationList command
Goffi <goffi@goffi.org>
parents: 2223
diff changeset
577 """List invitations
ebc0c1701811 plugin invitations: added invitationList command
Goffi <goffi@goffi.org>
parents: 2223
diff changeset
578
ebc0c1701811 plugin invitations: added invitationList command
Goffi <goffi@goffi.org>
parents: 2223
diff changeset
579 @param profile(unicode): return invitation linked to this profile only
ebc0c1701811 plugin invitations: added invitationList command
Goffi <goffi@goffi.org>
parents: 2223
diff changeset
580 C.PROF_KEY_NONE: don't filter invitations
ebc0c1701811 plugin invitations: added invitationList command
Goffi <goffi@goffi.org>
parents: 2223
diff changeset
581 @return list(unicode): invitations uids
ebc0c1701811 plugin invitations: added invitationList command
Goffi <goffi@goffi.org>
parents: 2223
diff changeset
582 """
3335
83bc9d46a417 plugin email invitation: fixed create/simpleCreate + invitee_name:
Goffi <goffi@goffi.org>
parents: 3323
diff changeset
583 invitations = await self.invitations.all()
2230
ebc0c1701811 plugin invitations: added invitationList command
Goffi <goffi@goffi.org>
parents: 2223
diff changeset
584 if profile != C.PROF_KEY_NONE:
4270
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
585 invitations = {
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
586 id_: data
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
587 for id_, data in invitations.items()
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
588 if data.get("profile") == profile
0d7bb4df2343 Reformatted code base using black.
Goffi <goffi@goffi.org>
parents: 4071
diff changeset
589 }
2230
ebc0c1701811 plugin invitations: added invitationList command
Goffi <goffi@goffi.org>
parents: 2223
diff changeset
590
3335
83bc9d46a417 plugin email invitation: fixed create/simpleCreate + invitee_name:
Goffi <goffi@goffi.org>
parents: 3323
diff changeset
591 return invitations