changeset 1077:387bbc459d8f

plugin XEP-0050: handle note element in command answer
author souliane <souliane@mailoo.org>
date Wed, 18 Jun 2014 14:52:52 +0200
parents a65ad0e738f7
children bb4517e69957
files src/plugins/plugin_xep_0050.py
diffstat 1 files changed, 12 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/plugins/plugin_xep_0050.py	Mon Jun 16 20:06:08 2014 +0200
+++ b/src/plugins/plugin_xep_0050.py	Wed Jun 18 14:52:52 2014 +0200
@@ -262,7 +262,18 @@
         remote_session_id = command_elt.getAttribute('sessionid')
         if remote_session_id:
             session_data['remote_id'] = remote_session_id
-        data_elt = command_elt.elements(data_form.NS_X_DATA, 'x').next()
+        try:
+            data_elt = command_elt.elements(data_form.NS_X_DATA, 'x').next()
+        except StopIteration:
+            # FIXME: command answer can contains several 'note' elements
+            try:
+                data_elt = command_elt.elements(NS_COMMANDS, 'note').next()
+                xml_ui = xml_tools.XMLUI('popup', title=data_elt.getAttribute('type'))
+                xml_ui.addText(str(data_elt))
+                return xml_ui
+            except StopIteration:
+                log.error(_('Unmanaged command answer: %s') % command_elt.toXml())
+                return None
         if session_id is None:
             return xml_tools.dataFormResult2XMLUI(data_elt)
         form = data_form.Form.fromElement(data_elt)