Updated ElementBase.__init__

This commit is contained in:
Lance Stout 2010-08-13 10:26:33 -04:00
parent 747001d33c
commit 415520200e

View file

@ -45,25 +45,37 @@ class ElementBase(object):
subitem = None
def __init__(self, xml=None, parent=None):
if parent is None:
self.parent = None
else:
self.parent = weakref.ref(parent)
"""
Create a new stanza object.
Arguments:
xml -- Initialize the stanza with optional existing XML.
parent -- Optional stanza object that contains this stanza.
"""
self.xml = xml
self.plugins = {}
self.iterables = []
self.idx = 0
if not self.setup(xml):
if parent is None:
self.parent = None
else:
self.parent = weakref.ref(parent)
if self.setup(xml):
# If we generated our own XML, then everything is ready.
return
# Initialize values using provided XML
for child in self.xml.getchildren():
if child.tag in self.plugin_tag_map:
self.plugins[self.plugin_tag_map[child.tag].plugin_attrib] = self.plugin_tag_map[child.tag](xml=child, parent=self)
plugin = self.plugin_tag_map[child.tag]
self.plugins[plugin.plugin_attrib] = plugin(child, self)
if self.subitem is not None:
for sub in self.subitem:
if child.tag == "{%s}%s" % (sub.namespace, sub.name):
self.iterables.append(sub(xml=child, parent=self))
self.iterables.append(sub(child, self))
break
@property
def attrib(self): #backwards compatibility
return self