changeset e00cf699baf7 in /home/hg/repos/gajim
details:http://hg.gajim.org/gajim?cmd=changeset;node=e00cf699baf7 description: print in groupchat when the invited contact declines the invitation
diffstat:
src/common/connection_handlers_events.py | 28 ++++++++++++++++++++++++++++ src/gui_interface.py | 9 +++++++++ 2 files changed, 37 insertions(+), 0 deletions(-)
diffs (77 lines):
diff -r a41057bf3cbe -r e00cf699baf7 src/common/connection_handlers_events.py --- a/src/common/connection_handlers_events.py Thu Aug 23 21:34:03 2012 +0200 +++ b/src/common/connection_handlers_events.py Thu Aug 23 22:11:21 2012 +0200 @@ -1068,12 +1068,18 @@ self.enc_tag = self.stanza.getTag('x', namespace=xmpp.NS_ENCRYPTED)
self.invite_tag = None + self.decline_tag = None if not self.enc_tag: self.invite_tag = self.stanza.getTag('x', namespace=xmpp.NS_MUC_USER) if self.invite_tag and not self.invite_tag.getTag('invite'): self.invite_tag = None
+ self.decline_tag = self.stanza.getTag('x', + namespace=xmpp.NS_MUC_USER) + if self.decline_tag and not self.decline_tag.getTag('decline'): + self.decline_tag = None + self.thread_id = self.stanza.getThread() self.mtype = self.stanza.getType() if not self.mtype or self.mtype not in ('chat', 'groupchat', 'error'): @@ -1194,6 +1200,28 @@
return True
+class GcDeclineReceivedEvent(nec.NetworkIncomingEvent): + name = 'gc-decline-received' + base_network_events = [] + + def generate(self): + self.room_jid = self.msg_obj.fjid + + item = self.msg_obj.invite_tag.getTag('decline') + try: + self.jid_from = helpers.parse_jid(item.getAttr('from')) + except helpers.InvalidFormat: + log.warn('Invalid JID: %s, ignoring it' % item.getAttr('from')) + return + jid = gajim.get_jid_without_resource(self.jid_from) + if gajim.config.get_per('accounts', self.conn.name, + 'ignore_unknown_contacts') and not gajim.contacts.get_contacts( + self.conn.name, jid): + return + self.reason = item.getTagData('reason') + + return True + class DecryptedMessageReceivedEvent(nec.NetworkIncomingEvent, HelperEvent): name = 'decrypted-message-received' base_network_events = [] diff -r a41057bf3cbe -r e00cf699baf7 src/gui_interface.py --- a/src/gui_interface.py Thu Aug 23 21:34:03 2012 +0200 +++ b/src/gui_interface.py Thu Aug 23 22:11:21 2012 +0200 @@ -615,6 +615,14 @@ self.instances[account]['gc_config'][obj.jid].\ affiliation_list_received(obj.users_dict)
+ def handle_event_gc_decline(self, obj): + account = obj.conn.name + gc_control = self.msg_win_mgr.get_gc_control(obj.room_jid, account) + if gc_control: + gc_control.print_conversation( + _('%(jid)s declined the invitation') % {'jid': obj.room_jid}, + graphics=False) + def handle_event_gc_invitation(self, obj): #('GC_INVITATION', (room_jid, jid_from, reason, password, is_continued)) jid = gajim.get_jid_without_resource(obj.jid_from) @@ -1497,6 +1505,7 @@ 'file-request-received': [self.handle_event_file_request], 'fingerprint-error': [self.handle_event_fingerprint_error], 'gc-invitation-received': [self.handle_event_gc_invitation], + 'gc-decline-received': [self.handle_event_gc_decline], 'gc-presence-received': [self.handle_event_gc_presence], 'gc-message-received': [self.handle_event_gc_message], 'gmail-notify': [self.handle_event_gmail_notify],