Mercurial > libervia-backend
annotate src/plugins/plugin_xep_0249.py @ 1319:781ee3539252 frontends_multi_profiles
quick frontends(quick app): add a listeners (observer/observable) mechanism to call a callback when a event happen. Implemented an "avatar" event.
author | Goffi <goffi@goffi.org> |
---|---|
date | Mon, 09 Feb 2015 21:39:51 +0100 |
parents | 291eb8216f6e |
children | bf3f669a6052 |
rev | line source |
---|---|
317
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
1 #!/usr/bin/python |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
2 # -*- coding: utf-8 -*- |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
3 |
609
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
4 # SAT plugin for managing xep-0249 |
811 | 5 # Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014 Jérôme Poisson (goffi@goffi.org) |
317
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
6 |
609
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
7 # This program is free software: you can redistribute it and/or modify |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
8 # it under the terms of the GNU Affero General Public License as published by |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
9 # the Free Software Foundation, either version 3 of the License, or |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
10 # (at your option) any later version. |
317
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
11 |
609
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
12 # This program is distributed in the hope that it will be useful, |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
15 # GNU Affero General Public License for more details. |
317
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
16 |
609
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
17 # You should have received a copy of the GNU Affero General Public License |
84a6e83157c2
fixed licences in docstrings (they are now in comments)
Goffi <goffi@goffi.org>
parents:
594
diff
changeset
|
18 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
317
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
19 |
771 | 20 from sat.core.i18n import _ |
916
1a759096ccbd
core: use of Const for profile_key + replaced '@DEFAULT@' default profile_key by '@NONE@'
Goffi <goffi@goffi.org>
parents:
844
diff
changeset
|
21 from sat.core.constants import Const as C |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
968
diff
changeset
|
22 from sat.core.log import getLogger |
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
968
diff
changeset
|
23 log = getLogger(__name__) |
317
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
24 from twisted.words.xish import domish |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
968
diff
changeset
|
25 from twisted.words.protocols.jabber import jid |
317
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
26 |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
27 from zope.interface import implements |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
28 |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
968
diff
changeset
|
29 from wokkel import disco, iwokkel |
317
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
30 |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
31 |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
32 try: |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
33 from twisted.words.protocols.xmlstream import XMPPHandler |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
34 except ImportError: |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
35 from wokkel.subprotocols import XMPPHandler |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
36 |
594
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
37 MESSAGE = '/message' |
317
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
38 NS_DIRECT_MUC_INVITATION = 'jabber:x:conference' |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
39 DIRECT_MUC_INVITATION_REQUEST = MESSAGE + '/x[@xmlns="' + NS_DIRECT_MUC_INVITATION + '"]' |
689
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
40 AUTOJOIN_KEY = "Misc" |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
41 AUTOJOIN_NAME = "Auto-join MUC on invitation" |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
42 AUTOJOIN_VALUES = ["ask", "always", "never"] |
317
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
43 |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
44 PLUGIN_INFO = { |
594
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
45 "name": "XEP 0249 Plugin", |
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
46 "import_name": "XEP-0249", |
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
47 "type": "XEP", |
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
48 "protocols": ["XEP-0249"], |
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
49 "dependencies": ["XEP-0045"], |
1002
291eb8216f6e
plugins TEXT-COMMANDS, XEP-0045, XEP-0048, XEP-0249:
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
50 "recommendations": [C.TEXT_CMDS], |
594
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
51 "main": "XEP_0249", |
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
52 "handler": "yes", |
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
53 "description": _("""Implementation of Direct MUC Invitations""") |
317
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
54 } |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
55 |
594
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
56 |
588
beaf6bec2fcd
Remove every old-style class.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
587
diff
changeset
|
57 class XEP_0249(object): |
317
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
58 |
689
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
59 params = """ |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
60 <params> |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
61 <individual> |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
62 <category name="%(category_name)s" label="%(category_label)s"> |
968
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
916
diff
changeset
|
63 <param name="%(param_name)s" label="%(param_label)s" type="list" security="0"> |
689
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
64 %(param_options)s |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
65 </param> |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
66 </category> |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
67 </individual> |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
68 </params> |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
69 """ % { |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
70 'category_name': AUTOJOIN_KEY, |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
71 'category_label': _("Misc"), |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
72 'param_name': AUTOJOIN_NAME, |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
73 'param_label': _("Auto-join MUC on invitation"), |
968
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
916
diff
changeset
|
74 'param_options': '\n'.join(['<option value="%s" %s/>' % \ |
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
916
diff
changeset
|
75 (value, 'selected="true"' if value == AUTOJOIN_VALUES[0] else '') \ |
75f3b3b430ff
tools, frontends, memory: param definition and XMLUI handle multi-selection for list widgets:
souliane <souliane@mailoo.org>
parents:
916
diff
changeset
|
76 for value in AUTOJOIN_VALUES]) |
689
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
77 } |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
78 |
317
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
79 def __init__(self, host): |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
968
diff
changeset
|
80 log.info(_("Plugin XEP_0249 initialization")) |
317
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
81 self.host = host |
689
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
82 host.memory.updateParams(self.params) |
372
f964dcec1611
core: plugins refactored according to bridge + updatedValue now use profile
Goffi <goffi@goffi.org>
parents:
317
diff
changeset
|
83 host.bridge.addMethod("inviteMUC", ".plugin", in_sign='sssa{ss}s', out_sign='', method=self._invite) |
1002
291eb8216f6e
plugins TEXT-COMMANDS, XEP-0045, XEP-0048, XEP-0249:
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
84 try: |
291eb8216f6e
plugins TEXT-COMMANDS, XEP-0045, XEP-0048, XEP-0249:
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
85 self.host.plugins[C.TEXT_CMDS].registerTextCommands(self) |
291eb8216f6e
plugins TEXT-COMMANDS, XEP-0045, XEP-0048, XEP-0249:
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
86 except KeyError: |
291eb8216f6e
plugins TEXT-COMMANDS, XEP-0045, XEP-0048, XEP-0249:
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
87 log.info(_("Text commands not available")) |
317
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
88 |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
89 def getHandler(self, profile): |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
90 return XEP_0249_handler(self) |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
91 |
916
1a759096ccbd
core: use of Const for profile_key + replaced '@DEFAULT@' default profile_key by '@NONE@'
Goffi <goffi@goffi.org>
parents:
844
diff
changeset
|
92 def invite(self, target, room, options={}, profile_key=C.PROF_KEY_NONE): |
317
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
93 """ |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
94 Invite a user to a room |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
95 @param target: jid of the user to invite |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
96 @param room: jid of the room where the user is invited |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
97 @options: attribute with extra info (reason, password) as in #XEP-0249 |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
98 @profile_key: %(doc_profile_key)s |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
99 """ |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
100 profile = self.host.memory.getProfileName(profile_key) |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
101 if not profile: |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
968
diff
changeset
|
102 log.error(_("Profile doesn't exists !")) |
317
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
103 return |
594
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
104 message = domish.Element((None, 'message')) |
317
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
105 message["to"] = target.full() |
594
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
106 x_elt = message.addElement('x', NS_DIRECT_MUC_INVITATION) |
317
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
107 x_elt['jid'] = room.userhost() |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
108 for opt in options: |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
109 x_elt[opt] = options[opt] |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
110 self.host.profiles[profile].xmlstream.send(message) |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
111 |
916
1a759096ccbd
core: use of Const for profile_key + replaced '@DEFAULT@' default profile_key by '@NONE@'
Goffi <goffi@goffi.org>
parents:
844
diff
changeset
|
112 def _invite(self, target, service, roomId, options={}, profile_key=C.PROF_KEY_NONE): |
317
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
113 """ |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
114 Invite an user to a room |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
115 @param target: jid of the user to invite |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
116 @param service: jid of the MUC service |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
117 @param roomId: name of the room |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
118 @param profile_key: %(doc_profile_key)s |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
119 """ |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
120 #TODO: check parameters validity |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
121 self.invite(jid.JID(target), jid.JID("%s@%s" % (roomId, service)), options, profile_key) |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
122 |
916
1a759096ccbd
core: use of Const for profile_key + replaced '@DEFAULT@' default profile_key by '@NONE@'
Goffi <goffi@goffi.org>
parents:
844
diff
changeset
|
123 def _accept(self, room, profile_key=C.PROF_KEY_NONE): |
689
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
124 """ |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
125 Accept the invitation to join a MUC |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
126 @param room: room jid as string |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
127 """ |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
128 profile = self.host.memory.getProfileName(profile_key) |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
129 if not profile: |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
968
diff
changeset
|
130 log.error(_("Profile doesn't exists !")) |
689
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
131 return |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
968
diff
changeset
|
132 log.info(_('Invitation accepted for room %(room)s [%(profile)s]') % {'room': room, 'profile': profile}) |
689
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
133 _jid, xmlstream = self.host.getJidNStream(profile) |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
134 d = self.host.plugins["XEP-0045"].join(jid.JID(room), _jid.user, {}, profile) |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
968
diff
changeset
|
135 return d |
689
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
136 |
317
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
137 def onInvitation(self, message, profile): |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
138 """ |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
139 called when an invitation is received |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
140 @param message: message element |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
141 @profile: %(doc_profile)s |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
142 """ |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
143 try: |
689
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
144 room = message.firstChildElement()['jid'] |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
968
diff
changeset
|
145 log.info(_('Invitation received for room %(room)s [%(profile)s]') % {'room': room, 'profile': profile}) |
317
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
146 except: |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
968
diff
changeset
|
147 log.error(_('Error while parsing invitation')) |
317
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
148 return |
710
3344f1d8a232
plugin XEP-0249: silently discard MUC invitation if user is already in
souliane <souliane@mailoo.org>
parents:
689
diff
changeset
|
149 from_ = message["from"] |
3344f1d8a232
plugin XEP-0249: silently discard MUC invitation if user is already in
souliane <souliane@mailoo.org>
parents:
689
diff
changeset
|
150 if room in self.host.plugins["XEP-0045"].clients[profile].joined_rooms: |
993
301b342c697a
core: use of the new core.log module:
Goffi <goffi@goffi.org>
parents:
968
diff
changeset
|
151 log.info(_("Invitation silently discarded because user is already in the room.")) |
710
3344f1d8a232
plugin XEP-0249: silently discard MUC invitation if user is already in
souliane <souliane@mailoo.org>
parents:
689
diff
changeset
|
152 return |
689
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
153 autojoin = self.host.memory.getParamA(AUTOJOIN_NAME, AUTOJOIN_KEY, profile_key=profile) |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
154 |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
155 def accept_cb(conf_id, accepted, data, profile): |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
156 if conf_id == room and accepted: |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
157 self._accept(room, profile) |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
158 |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
159 if autojoin == "always": |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
160 self._accept(room, profile) |
1002
291eb8216f6e
plugins TEXT-COMMANDS, XEP-0045, XEP-0048, XEP-0249:
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
161 elif autojoin == "never": |
291eb8216f6e
plugins TEXT-COMMANDS, XEP-0045, XEP-0048, XEP-0249:
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
162 self.host.bridge.newAlert(_("An invitation from %(user)s to join the room %(room)s has been declined according to your personal settings.") % {'user': from_, 'room': room}, _("MUC invitation"), "INFO", profile) |
291eb8216f6e
plugins TEXT-COMMANDS, XEP-0045, XEP-0048, XEP-0249:
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
163 else: # leave the default value here |
844
f3513c8cc2e6
misc: fix unnamed arguments in format strings
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
164 data = {"message": _("You have been invited by %(user)s to join the room %(room)s. Do you accept?") % {'user': from_, 'room': room}, "title": _("MUC invitation")} |
689
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
165 self.host.askConfirmation(room, "YES/NO", data, accept_cb, profile) |
1002
291eb8216f6e
plugins TEXT-COMMANDS, XEP-0045, XEP-0048, XEP-0249:
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
166 |
291eb8216f6e
plugins TEXT-COMMANDS, XEP-0045, XEP-0048, XEP-0249:
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
167 def cmd_invite(self, mess_data, profile): |
291eb8216f6e
plugins TEXT-COMMANDS, XEP-0045, XEP-0048, XEP-0249:
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
168 """invite someone in the room |
291eb8216f6e
plugins TEXT-COMMANDS, XEP-0045, XEP-0048, XEP-0249:
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
169 |
291eb8216f6e
plugins TEXT-COMMANDS, XEP-0045, XEP-0048, XEP-0249:
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
170 @command (group): (JID) |
291eb8216f6e
plugins TEXT-COMMANDS, XEP-0045, XEP-0048, XEP-0249:
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
171 - JID: the JID of the person to invite |
291eb8216f6e
plugins TEXT-COMMANDS, XEP-0045, XEP-0048, XEP-0249:
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
172 """ |
291eb8216f6e
plugins TEXT-COMMANDS, XEP-0045, XEP-0048, XEP-0249:
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
173 log.debug("Catched invite command") |
291eb8216f6e
plugins TEXT-COMMANDS, XEP-0045, XEP-0048, XEP-0249:
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
174 |
291eb8216f6e
plugins TEXT-COMMANDS, XEP-0045, XEP-0048, XEP-0249:
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
175 if mess_data['type'] != "groupchat": |
291eb8216f6e
plugins TEXT-COMMANDS, XEP-0045, XEP-0048, XEP-0249:
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
176 self.host.plugins[C.TEXT_CMDS].feedBackWrongContext('invite', 'groupchat', mess_data, profile) |
291eb8216f6e
plugins TEXT-COMMANDS, XEP-0045, XEP-0048, XEP-0249:
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
177 return False |
291eb8216f6e
plugins TEXT-COMMANDS, XEP-0045, XEP-0048, XEP-0249:
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
178 |
291eb8216f6e
plugins TEXT-COMMANDS, XEP-0045, XEP-0048, XEP-0249:
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
179 jid_s = mess_data["unparsed"].strip() |
291eb8216f6e
plugins TEXT-COMMANDS, XEP-0045, XEP-0048, XEP-0249:
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
180 try: |
291eb8216f6e
plugins TEXT-COMMANDS, XEP-0045, XEP-0048, XEP-0249:
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
181 assert(jid_s) |
291eb8216f6e
plugins TEXT-COMMANDS, XEP-0045, XEP-0048, XEP-0249:
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
182 jid_ = jid.JID(jid_s) |
291eb8216f6e
plugins TEXT-COMMANDS, XEP-0045, XEP-0048, XEP-0249:
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
183 assert(jid_.user) |
291eb8216f6e
plugins TEXT-COMMANDS, XEP-0045, XEP-0048, XEP-0249:
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
184 assert(jid_.host) |
291eb8216f6e
plugins TEXT-COMMANDS, XEP-0045, XEP-0048, XEP-0249:
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
185 except (jid.InvalidFormat, AssertionError): |
291eb8216f6e
plugins TEXT-COMMANDS, XEP-0045, XEP-0048, XEP-0249:
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
186 feedback = _(u"You must provide a valid JID to invite, like in '/invite contact@example.net'") |
291eb8216f6e
plugins TEXT-COMMANDS, XEP-0045, XEP-0048, XEP-0249:
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
187 self.host.plugins[C.TEXT_CMDS].feedBack(feedback, mess_data, profile) |
291eb8216f6e
plugins TEXT-COMMANDS, XEP-0045, XEP-0048, XEP-0249:
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
188 return False |
291eb8216f6e
plugins TEXT-COMMANDS, XEP-0045, XEP-0048, XEP-0249:
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
189 |
291eb8216f6e
plugins TEXT-COMMANDS, XEP-0045, XEP-0048, XEP-0249:
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
190 self.invite(jid_, mess_data["to"], {}, profile) |
291eb8216f6e
plugins TEXT-COMMANDS, XEP-0045, XEP-0048, XEP-0249:
souliane <souliane@mailoo.org>
parents:
993
diff
changeset
|
191 return False |
317
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
192 |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
193 |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
194 class XEP_0249_handler(XMPPHandler): |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
195 implements(iwokkel.IDisco) |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
196 |
317
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
197 def __init__(self, plugin_parent): |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
198 self.plugin_parent = plugin_parent |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
199 self.host = plugin_parent.host |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
200 |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
201 def connectionInitialized(self): |
594
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
202 self.xmlstream.addObserver(DIRECT_MUC_INVITATION_REQUEST, self.plugin_parent.onInvitation, profile=self.parent.profile) |
317
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
203 |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
204 def getDiscoInfo(self, requestor, target, nodeIdentifier=''): |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
205 return [disco.DiscoFeature(NS_DIRECT_MUC_INVITATION)] |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
206 |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
207 def getDiscoItems(self, requestor, target, nodeIdentifier=''): |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
208 return [] |