summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormathieui <mathieui@mathieui.net>2016-09-30 21:01:05 +0200
committermathieui <mathieui@mathieui.net>2016-10-02 17:12:47 +0200
commit96d1c26f90ce0ecd3651a9990e72e7d55e298328 (patch)
tree5ba4268ee568a8902f56eae0892d2fb411b49d31
parent46a90749f839c3d64aa05458cef825f56e9c702d (diff)
downloadslixmpp-96d1c26f90ce0ecd3651a9990e72e7d55e298328.tar.gz
slixmpp-96d1c26f90ce0ecd3651a9990e72e7d55e298328.tar.bz2
slixmpp-96d1c26f90ce0ecd3651a9990e72e7d55e298328.tar.xz
slixmpp-96d1c26f90ce0ecd3651a9990e72e7d55e298328.zip
Add a fallback if the lang we want is not available
Previously, trying to get a text node with a lang which is different from the one we specified would return nothing, which means e.g. a message would be ignored because its body is of lang 'fr' when we setup slixmpp to prefer 'en'. We want to return something when there is an available, valid content in a different language.
-rw-r--r--slixmpp/xmlstream/stanzabase.py8
1 files changed, 7 insertions, 1 deletions
diff --git a/slixmpp/xmlstream/stanzabase.py b/slixmpp/xmlstream/stanzabase.py
index 8023831b..e7ffddc8 100644
--- a/slixmpp/xmlstream/stanzabase.py
+++ b/slixmpp/xmlstream/stanzabase.py
@@ -907,11 +907,17 @@ class ElementBase(object):
stanzas = self.xml.findall(name)
if not stanzas:
return default
+ result = None
for stanza in stanzas:
if stanza.attrib.get('{%s}lang' % XML_NS, default_lang) == lang:
if stanza.text is None:
return default
- return stanza.text
+ result = stanza.text
+ break
+ if stanza.text:
+ result = stanza.text
+ if result is not None:
+ return result
return default
def _get_all_sub_text(self, name, default='', lang=None):