diff options
author | fritzy <fritzy@ip-10-251-242-239.ec2.internal> | 2010-08-21 22:48:43 +0000 |
---|---|---|
committer | fritzy <fritzy@ip-10-251-242-239.ec2.internal> | 2010-08-21 22:48:43 +0000 |
commit | 345656926ea5ee8e8cc359b97fd1d0cbc4b1fab4 (patch) | |
tree | ca0c851734641f6c4a0169528eee19bd706191be /sleekxmpp/plugins/xep_0004.py | |
parent | c05ddcb7f5eaa5bbf7efb4e765d04b62212a3394 (diff) | |
download | slixmpp-345656926ea5ee8e8cc359b97fd1d0cbc4b1fab4.tar.gz slixmpp-345656926ea5ee8e8cc359b97fd1d0cbc4b1fab4.tar.bz2 slixmpp-345656926ea5ee8e8cc359b97fd1d0cbc4b1fab4.tar.xz slixmpp-345656926ea5ee8e8cc359b97fd1d0cbc4b1fab4.zip |
added form compatibility with old api, stanzas now bool() to True on 2.x, jid attributes will return '' if not set
Diffstat (limited to 'sleekxmpp/plugins/xep_0004.py')
-rw-r--r-- | sleekxmpp/plugins/xep_0004.py | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/sleekxmpp/plugins/xep_0004.py b/sleekxmpp/plugins/xep_0004.py index 86963632..9e67e656 100644 --- a/sleekxmpp/plugins/xep_0004.py +++ b/sleekxmpp/plugins/xep_0004.py @@ -31,6 +31,7 @@ class Form(ElementBase): ElementBase.__init__(self, *args, **kwargs) if title is not None: self['title'] = title + self.field = FieldAccessor(self) def setup(self, xml=None): if ElementBase.setup(self, xml): #if we had to generate xml @@ -111,7 +112,7 @@ class Form(ElementBase): reportedXML = self.xml.find('{%s}reported' % self.namespace) if reportedXML is not None: self.xml.remove(reportedXML) - + def getFields(self, use_dict=False): fields = {} if use_dict else [] fieldsXML = self.xml.findall('{%s}field' % FormField.namespace) @@ -195,6 +196,27 @@ class Form(ElementBase): fields = self.getFields(use_dict=True) for field in values: fields[field]['value'] = values[field] + + def merge(self, other): + new = copy.copy(self) + nfields = new.getFields(use_dict=True) + ofields = other.getFields(use_dict=True) + nfields.update(ofields) + new.setFields([(x, nfields[x]) for x in nfields]) + return new + +class FieldAccessor(object): + def __init__(self, form): + self.form = form + + def __getitem__(self, key): + return self.form.getFields(use_dict=True)[key] + + def __contains__(self, key): + return key in self.form.getFields(use_dict=True) + + def has_key(self, key): + return key in self.form.getFields(use_dict=True) class FormField(ElementBase): |