Mercurial > libervia-backend
annotate src/plugins/plugin_xep_0249.py @ 927:cd150dd947e3
plugin text-commands: fixed name conflicts management + plugin parrot: removed now done TODO
author | Goffi <goffi@goffi.org> |
---|---|
date | Mon, 24 Mar 2014 13:49:37 +0100 |
parents | 1a759096ccbd |
children | 75f3b3b430ff |
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 |
317
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
22 from logging import debug, info, warning, error |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
23 from twisted.words.xish import domish |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
24 from twisted.internet import protocol, defer |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
25 from twisted.words.protocols.jabber import client, jid, xmlstream |
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 |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
29 from wokkel import disco, iwokkel, data_form |
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"], |
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
50 "main": "XEP_0249", |
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
51 "handler": "yes", |
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
52 "description": _("""Implementation of Direct MUC Invitations""") |
317
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
53 } |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
54 |
594
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
55 |
588
beaf6bec2fcd
Remove every old-style class.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
587
diff
changeset
|
56 class XEP_0249(object): |
317
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
57 |
689
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
58 params = """ |
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 <individual> |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
61 <category name="%(category_name)s" label="%(category_label)s"> |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
62 <param name="%(param_name)s" label="%(param_label)s" value="%(param_default)s" type="list" security="0"> |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
63 %(param_options)s |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
64 </param> |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
65 </category> |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
66 </individual> |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
67 </params> |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
68 """ % { |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
69 'category_name': AUTOJOIN_KEY, |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
70 'category_label': _("Misc"), |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
71 'param_name': AUTOJOIN_NAME, |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
72 'param_label': _("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
|
73 'param_default': AUTOJOIN_VALUES[0], |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
74 'param_options': ['<option value="%s"/>' % value for value in AUTOJOIN_VALUES] |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
75 } |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
76 |
317
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
77 def __init__(self, host): |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
78 info(_("Plugin XEP_0249 initialization")) |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
79 self.host = host |
689
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
80 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
|
81 host.bridge.addMethod("inviteMUC", ".plugin", in_sign='sssa{ss}s', out_sign='', method=self._invite) |
317
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
82 |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
83 def getHandler(self, profile): |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
84 return XEP_0249_handler(self) |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
85 |
916
1a759096ccbd
core: use of Const for profile_key + replaced '@DEFAULT@' default profile_key by '@NONE@'
Goffi <goffi@goffi.org>
parents:
844
diff
changeset
|
86 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
|
87 """ |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
88 Invite a user to a room |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
89 @param target: jid of the user to invite |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
90 @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
|
91 @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
|
92 @profile_key: %(doc_profile_key)s |
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 profile = self.host.memory.getProfileName(profile_key) |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
95 if not profile: |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
96 error(_("Profile doesn't exists !")) |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
97 return |
594
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
98 message = domish.Element((None, 'message')) |
317
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
99 message["to"] = target.full() |
594
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
100 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
|
101 x_elt['jid'] = room.userhost() |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
102 for opt in options: |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
103 x_elt[opt] = options[opt] |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
104 self.host.profiles[profile].xmlstream.send(message) |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
105 |
916
1a759096ccbd
core: use of Const for profile_key + replaced '@DEFAULT@' default profile_key by '@NONE@'
Goffi <goffi@goffi.org>
parents:
844
diff
changeset
|
106 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
|
107 """ |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
108 Invite an user to a room |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
109 @param target: jid of the user to invite |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
110 @param service: jid of the MUC service |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
111 @param roomId: name of the room |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
112 @param profile_key: %(doc_profile_key)s |
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 #TODO: check parameters validity |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
115 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
|
116 |
916
1a759096ccbd
core: use of Const for profile_key + replaced '@DEFAULT@' default profile_key by '@NONE@'
Goffi <goffi@goffi.org>
parents:
844
diff
changeset
|
117 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
|
118 """ |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
119 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
|
120 @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
|
121 """ |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
122 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
|
123 if not profile: |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
124 error(_("Profile doesn't exists !")) |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
125 return |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
126 info(_('Invitation accepted for room %(room)s [%(profile)s]') % {'room': room, 'profile': profile}) |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
127 _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
|
128 d = self.host.plugins["XEP-0045"].join(jid.JID(room), _jid.user, {}, profile) |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
129 |
317
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
130 def onInvitation(self, message, profile): |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
131 """ |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
132 called when an invitation is received |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
133 @param message: message element |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
134 @profile: %(doc_profile)s |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
135 """ |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
136 try: |
689
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
137 room = message.firstChildElement()['jid'] |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
138 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
|
139 except: |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
140 error(_('Error while parsing invitation')) |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
141 return |
710
3344f1d8a232
plugin XEP-0249: silently discard MUC invitation if user is already in
souliane <souliane@mailoo.org>
parents:
689
diff
changeset
|
142 from_ = message["from"] |
3344f1d8a232
plugin XEP-0249: silently discard MUC invitation if user is already in
souliane <souliane@mailoo.org>
parents:
689
diff
changeset
|
143 if room in self.host.plugins["XEP-0045"].clients[profile].joined_rooms: |
3344f1d8a232
plugin XEP-0249: silently discard MUC invitation if user is already in
souliane <souliane@mailoo.org>
parents:
689
diff
changeset
|
144 info(_("Invitation silently discarded because user is already in the room.")) |
3344f1d8a232
plugin XEP-0249: silently discard MUC invitation if user is already in
souliane <souliane@mailoo.org>
parents:
689
diff
changeset
|
145 return |
689
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
146 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
|
147 |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
148 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
|
149 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
|
150 self._accept(room, profile) |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
151 |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
152 if autojoin == "always": |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
153 self._accept(room, profile) |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
154 elif autojoin == "ask": |
844
f3513c8cc2e6
misc: fix unnamed arguments in format strings
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
155 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
|
156 self.host.askConfirmation(room, "YES/NO", data, accept_cb, profile) |
78bf4ed37574
plugin XEP-249: added parameter Misc / Auto-join MUC on invitation
souliane <souliane@mailoo.org>
parents:
609
diff
changeset
|
157 else: |
844
f3513c8cc2e6
misc: fix unnamed arguments in format strings
souliane <souliane@mailoo.org>
parents:
811
diff
changeset
|
158 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) |
317
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
159 |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
160 |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
161 class XEP_0249_handler(XMPPHandler): |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
162 implements(iwokkel.IDisco) |
587
952322b1d490
Remove trailing whitespaces.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
572
diff
changeset
|
163 |
317
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
164 def __init__(self, plugin_parent): |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
165 self.plugin_parent = plugin_parent |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
166 self.host = plugin_parent.host |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
167 |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
168 def connectionInitialized(self): |
594
e629371a28d3
Fix pep8 support in src/plugins.
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
588
diff
changeset
|
169 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
|
170 |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
171 def getDiscoInfo(self, requestor, target, nodeIdentifier=''): |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
172 return [disco.DiscoFeature(NS_DIRECT_MUC_INVITATION)] |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
173 |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
174 def getDiscoItems(self, requestor, target, nodeIdentifier=''): |
f1f7c94278f2
added plugin XEP-0249: direct MUC invitation
Goffi <goffi@goffi.org>
parents:
diff
changeset
|
175 return [] |