ElementBase: Remove deprecated find() and findall() methods.
This commit is contained in:
parent
b8e091233e
commit
3a9b45e4f2
12 changed files with 46 additions and 75 deletions
|
@ -29,7 +29,7 @@ class Mechanisms(ElementBase):
|
|||
"""
|
||||
"""
|
||||
results = []
|
||||
mechs = self.findall('{%s}mechanism' % self.namespace)
|
||||
mechs = self.xml.findall('{%s}mechanism' % self.namespace)
|
||||
if mechs:
|
||||
for mech in mechs:
|
||||
results.append(mech.text)
|
||||
|
@ -47,7 +47,7 @@ class Mechanisms(ElementBase):
|
|||
def del_mechanisms(self):
|
||||
"""
|
||||
"""
|
||||
mechs = self.findall('{%s}mechanism' % self.namespace)
|
||||
mechs = self.xml.findall('{%s}mechanism' % self.namespace)
|
||||
if mechs:
|
||||
for mech in mechs:
|
||||
self.xml.remove(mech)
|
||||
|
|
|
@ -25,7 +25,7 @@ def fault2xml(fault):
|
|||
|
||||
def xml2fault(params):
|
||||
vals = []
|
||||
for value in params.findall('{%s}value' % _namespace):
|
||||
for value in params.xml.findall('{%s}value' % _namespace):
|
||||
vals.append(_xml2py(value))
|
||||
fault = dict()
|
||||
fault['code'] = vals[0]['faultCode']
|
||||
|
@ -92,39 +92,40 @@ def _py2xml(*args):
|
|||
def xml2py(params):
|
||||
namespace = 'jabber:iq:rpc'
|
||||
vals = []
|
||||
for param in params.findall('{%s}param' % namespace):
|
||||
for param in params.xml.findall('{%s}param' % namespace):
|
||||
vals.append(_xml2py(param.find('{%s}value' % namespace)))
|
||||
return vals
|
||||
|
||||
def _xml2py(value):
|
||||
namespace = 'jabber:iq:rpc'
|
||||
if value.find('{%s}nil' % namespace) is not None:
|
||||
find_value = value.xml.find
|
||||
if find_value('{%s}nil' % namespace) is not None:
|
||||
return None
|
||||
if value.find('{%s}i4' % namespace) is not None:
|
||||
return int(value.find('{%s}i4' % namespace).text)
|
||||
if value.find('{%s}int' % namespace) is not None:
|
||||
return int(value.find('{%s}int' % namespace).text)
|
||||
if value.find('{%s}boolean' % namespace) is not None:
|
||||
return bool(int(value.find('{%s}boolean' % namespace).text))
|
||||
if value.find('{%s}string' % namespace) is not None:
|
||||
return value.find('{%s}string' % namespace).text
|
||||
if value.find('{%s}double' % namespace) is not None:
|
||||
return float(value.find('{%s}double' % namespace).text)
|
||||
if value.find('{%s}base64' % namespace) is not None:
|
||||
return rpcbase64(value.find('{%s}base64' % namespace).text.encode())
|
||||
if value.find('{%s}Base64' % namespace) is not None:
|
||||
if find_value('{%s}i4' % namespace) is not None:
|
||||
return int(find_value('{%s}i4' % namespace).text)
|
||||
if find_value('{%s}int' % namespace) is not None:
|
||||
return int(find_value('{%s}int' % namespace).text)
|
||||
if find_value('{%s}boolean' % namespace) is not None:
|
||||
return bool(int(find_value('{%s}boolean' % namespace).text))
|
||||
if find_value('{%s}string' % namespace) is not None:
|
||||
return find_value('{%s}string' % namespace).text
|
||||
if find_value('{%s}double' % namespace) is not None:
|
||||
return float(find_value('{%s}double' % namespace).text)
|
||||
if find_value('{%s}base64' % namespace) is not None:
|
||||
return rpcbase64(find_value('{%s}base64' % namespace).text.encode())
|
||||
if find_value('{%s}Base64' % namespace) is not None:
|
||||
# Older versions of XEP-0009 used Base64
|
||||
return rpcbase64(value.find('{%s}Base64' % namespace).text.encode())
|
||||
if value.find('{%s}dateTime.iso8601' % namespace) is not None:
|
||||
return rpctime(value.find('{%s}dateTime.iso8601' % namespace).text)
|
||||
if value.find('{%s}struct' % namespace) is not None:
|
||||
return rpcbase64(find_value('{%s}Base64' % namespace).text.encode())
|
||||
if find_value('{%s}dateTime.iso8601' % namespace) is not None:
|
||||
return rpctime(find_value('{%s}dateTime.iso8601' % namespace).text)
|
||||
if find_value('{%s}struct' % namespace) is not None:
|
||||
struct = {}
|
||||
for member in value.find('{%s}struct' % namespace).findall('{%s}member' % namespace):
|
||||
for member in find_value('{%s}struct' % namespace).findall('{%s}member' % namespace):
|
||||
struct[member.find('{%s}name' % namespace).text] = _xml2py(member.find('{%s}value' % namespace))
|
||||
return struct
|
||||
if value.find('{%s}array' % namespace) is not None:
|
||||
if find_value('{%s}array' % namespace) is not None:
|
||||
array = []
|
||||
for val in value.find('{%s}array' % namespace).find('{%s}data' % namespace).findall('{%s}value' % namespace):
|
||||
for val in find_value('{%s}array' % namespace).find('{%s}data' % namespace).findall('{%s}value' % namespace):
|
||||
array.append(_xml2py(val))
|
||||
return array
|
||||
raise ValueError()
|
||||
|
|
|
@ -163,7 +163,7 @@ class ACL:
|
|||
|
||||
@classmethod
|
||||
def _next_token(cls, expression, index):
|
||||
new_index = expression.find('*', index)
|
||||
new_index = expression.xml.find('*', index)
|
||||
if new_index == 0:
|
||||
return ''
|
||||
else:
|
||||
|
@ -182,7 +182,7 @@ class ACL:
|
|||
#! print "[TOKEN] '%s'" % token
|
||||
size = len(token)
|
||||
if size > 0:
|
||||
token_index = value.find(token, position)
|
||||
token_index = value.xml.find(token, position)
|
||||
if token_index == -1:
|
||||
return False
|
||||
else:
|
||||
|
|
|
@ -137,7 +137,7 @@ class DiscoInfo(ElementBase):
|
|||
identity = (category, itype, lang)
|
||||
if identity in self._identities:
|
||||
self._identities.remove(identity)
|
||||
for id_xml in self.findall('{%s}identity' % self.namespace):
|
||||
for id_xml in self.xml.findall('{%s}identity' % self.namespace):
|
||||
id = (id_xml.attrib['category'],
|
||||
id_xml.attrib['type'],
|
||||
id_xml.attrib.get('{%s}lang' % self.xml_ns, None))
|
||||
|
@ -163,7 +163,7 @@ class DiscoInfo(ElementBase):
|
|||
identities = set()
|
||||
else:
|
||||
identities = []
|
||||
for id_xml in self.findall('{%s}identity' % self.namespace):
|
||||
for id_xml in self.xml.findall('{%s}identity' % self.namespace):
|
||||
xml_lang = id_xml.attrib.get('{%s}lang' % self.xml_ns, None)
|
||||
if lang is None or xml_lang == lang:
|
||||
id = (id_xml.attrib['category'],
|
||||
|
@ -205,7 +205,7 @@ class DiscoInfo(ElementBase):
|
|||
Arguments:
|
||||
lang -- Optional, standard xml:lang value.
|
||||
"""
|
||||
for id_xml in self.findall('{%s}identity' % self.namespace):
|
||||
for id_xml in self.xml.findall('{%s}identity' % self.namespace):
|
||||
if lang is None:
|
||||
self.xml.remove(id_xml)
|
||||
elif id_xml.attrib.get('{%s}lang' % self.xml_ns, None) == lang:
|
||||
|
@ -239,7 +239,7 @@ class DiscoInfo(ElementBase):
|
|||
"""
|
||||
if feature in self._features:
|
||||
self._features.remove(feature)
|
||||
for feature_xml in self.findall('{%s}feature' % self.namespace):
|
||||
for feature_xml in self.xml.findall('{%s}feature' % self.namespace):
|
||||
if feature_xml.attrib['var'] == feature:
|
||||
self.xml.remove(feature_xml)
|
||||
return True
|
||||
|
@ -251,7 +251,7 @@ class DiscoInfo(ElementBase):
|
|||
features = set()
|
||||
else:
|
||||
features = []
|
||||
for feature_xml in self.findall('{%s}feature' % self.namespace):
|
||||
for feature_xml in self.xml.findall('{%s}feature' % self.namespace):
|
||||
if dedupe:
|
||||
features.add(feature_xml.attrib['var'])
|
||||
else:
|
||||
|
@ -272,5 +272,5 @@ class DiscoInfo(ElementBase):
|
|||
def del_features(self):
|
||||
"""Remove all features."""
|
||||
self._features = set()
|
||||
for feature_xml in self.findall('{%s}feature' % self.namespace):
|
||||
for feature_xml in self.xml.findall('{%s}feature' % self.namespace):
|
||||
self.xml.remove(feature_xml)
|
||||
|
|
|
@ -95,7 +95,7 @@ class DiscoItems(ElementBase):
|
|||
node -- Optional extra identifying information.
|
||||
"""
|
||||
if (jid, node) in self._items:
|
||||
for item_xml in self.findall('{%s}item' % self.namespace):
|
||||
for item_xml in self.xml.findall('{%s}item' % self.namespace):
|
||||
item = (item_xml.attrib['jid'],
|
||||
item_xml.attrib.get('node', None))
|
||||
if item == (jid, node):
|
||||
|
|
|
@ -100,7 +100,7 @@ class Command(ElementBase):
|
|||
self.del_actions()
|
||||
if values:
|
||||
self._set_sub_text('{%s}actions' % self.namespace, '', True)
|
||||
actions = self.find('{%s}actions' % self.namespace)
|
||||
actions = self.xml.find('{%s}actions' % self.namespace)
|
||||
for val in values:
|
||||
if val in self.next_actions:
|
||||
action = ET.Element('{%s}%s' % (self.namespace, val))
|
||||
|
@ -111,7 +111,7 @@ class Command(ElementBase):
|
|||
Return the set of allowable next actions.
|
||||
"""
|
||||
actions = set()
|
||||
actions_xml = self.find('{%s}actions' % self.namespace)
|
||||
actions_xml = self.xml.find('{%s}actions' % self.namespace)
|
||||
if actions_xml is not None:
|
||||
for action in self.next_actions:
|
||||
action_xml = actions_xml.find('{%s}%s' % (self.namespace,
|
||||
|
|
|
@ -70,7 +70,7 @@ class Set(ElementBase):
|
|||
'count', 'index', 'last', 'max'))
|
||||
|
||||
def set_first_index(self, val):
|
||||
fi = self.find("{%s}first" % (self.namespace))
|
||||
fi = self.xml.find("{%s}first" % (self.namespace))
|
||||
if fi is not None:
|
||||
if val:
|
||||
fi.attrib['index'] = val
|
||||
|
@ -82,7 +82,7 @@ class Set(ElementBase):
|
|||
self.xml.append(fi)
|
||||
|
||||
def get_first_index(self):
|
||||
fi = self.find("{%s}first" % (self.namespace))
|
||||
fi = self.xml.find("{%s}first" % (self.namespace))
|
||||
if fi is not None:
|
||||
return fi.attrib.get('index', '')
|
||||
|
||||
|
|
|
@ -50,7 +50,7 @@ class ChatState(ElementBase):
|
|||
def get_chat_state(self):
|
||||
parent = self.parent()
|
||||
for state in self.states:
|
||||
state_xml = parent.find('{%s}%s' % (self.namespace, state))
|
||||
state_xml = parent.xml.find('{%s}%s' % (self.namespace, state))
|
||||
if state_xml is not None:
|
||||
self.xml = state_xml
|
||||
return state
|
||||
|
@ -68,7 +68,7 @@ class ChatState(ElementBase):
|
|||
def del_chat_state(self):
|
||||
parent = self.parent()
|
||||
for state in self.states:
|
||||
state_xml = parent.find('{%s}%s' % (self.namespace, state))
|
||||
state_xml = parent.xml.find('{%s}%s' % (self.namespace, state))
|
||||
if state_xml is not None:
|
||||
self.xml = ET.Element('')
|
||||
parent.xml.remove(state_xml)
|
||||
|
|
|
@ -32,7 +32,7 @@ class Request(ElementBase):
|
|||
|
||||
def get_request_receipt(self):
|
||||
parent = self.parent()
|
||||
if parent.find("{%s}request" % self.namespace) is not None:
|
||||
if parent.xml.find("{%s}request" % self.namespace) is not None:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
@ -63,7 +63,7 @@ class Received(ElementBase):
|
|||
|
||||
def get_receipt(self):
|
||||
parent = self.parent()
|
||||
xml = parent.find("{%s}received" % self.namespace)
|
||||
xml = parent.xml.find("{%s}received" % self.namespace)
|
||||
if xml is not None:
|
||||
return xml.attrib.get('id', '')
|
||||
return ''
|
||||
|
|
|
@ -99,7 +99,7 @@ class StreamManagement(ElementBase):
|
|||
interfaces = set(['required', 'optional'])
|
||||
|
||||
def get_required(self):
|
||||
return self.find('{%s}required' % self.namespace) is not None
|
||||
return self.xml.find('{%s}required' % self.namespace) is not None
|
||||
|
||||
def set_required(self, val):
|
||||
self.del_required()
|
||||
|
@ -110,7 +110,7 @@ class StreamManagement(ElementBase):
|
|||
self._del_sub('required')
|
||||
|
||||
def get_optional(self):
|
||||
return self.find('{%s}optional' % self.namespace) is not None
|
||||
return self.xml.find('{%s}optional' % self.namespace) is not None
|
||||
|
||||
def set_optional(self, val):
|
||||
self.del_optional()
|
||||
|
|
|
@ -540,7 +540,7 @@ class XEP_0325(BasePlugin):
|
|||
fields = [f['name'] for f in iq['setResponse']['datas']]
|
||||
error_msg = None
|
||||
|
||||
if not iq['setResponse'].find('error') is None and not iq['setResponse']['error']['text'] == "":
|
||||
if not iq['setResponse'].xml.find('error') is None and not iq['setResponse']['error']['text'] == "":
|
||||
error_msg = iq['setResponse']['error']['text']
|
||||
|
||||
callback = self.sessions[seqnr]["callback"]
|
||||
|
|
|
@ -1123,36 +1123,6 @@ class ElementBase(object):
|
|||
# Everything matched.
|
||||
return True
|
||||
|
||||
def find(self, xpath):
|
||||
"""Find an XML object in this stanza given an XPath expression.
|
||||
|
||||
Exposes ElementTree interface for backwards compatibility.
|
||||
|
||||
.. note::
|
||||
|
||||
Matching on attribute values is not supported in Python 2.6
|
||||
or Python 3.1
|
||||
|
||||
:param string xpath: An XPath expression matching a single
|
||||
desired element.
|
||||
"""
|
||||
return self.xml.find(xpath)
|
||||
|
||||
def findall(self, xpath):
|
||||
"""Find multiple XML objects in this stanza given an XPath expression.
|
||||
|
||||
Exposes ElementTree interface for backwards compatibility.
|
||||
|
||||
.. note::
|
||||
|
||||
Matching on attribute values is not supported in Python 2.6
|
||||
or Python 3.1.
|
||||
|
||||
:param string xpath: An XPath expression matching multiple
|
||||
desired elements.
|
||||
"""
|
||||
return self.xml.findall(xpath)
|
||||
|
||||
def get(self, key, default=None):
|
||||
"""Return the value of a stanza interface.
|
||||
|
||||
|
|
Loading…
Reference in a new issue