diff options
author | Tomasz Melcer <liori@exroot.org> | 2006-07-12 18:19:58 +0400 |
---|---|---|
committer | Tomasz Melcer <liori@exroot.org> | 2006-07-12 18:19:58 +0400 |
commit | db089f103d71fd2c99d08acb3a68493143122b66 (patch) | |
tree | f7f3521dcaf30eeba8ac4587d9a8ac2ee886c320 /src/common/dataforms.py | |
parent | aed92d21b76229524268df13a72b3e61d196894b (diff) |
Jid-multi almost works.
Diffstat (limited to 'src/common/dataforms.py')
-rw-r--r-- | src/common/dataforms.py | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/src/common/dataforms.py b/src/common/dataforms.py index f1390bf05..5acf452ad 100644 --- a/src/common/dataforms.py +++ b/src/common/dataforms.py @@ -249,7 +249,7 @@ class DataForm(xmpp.Node, object): self.delChild('recorded') except ValueError: pass - self.addChild('recorded', None, fields) + self.addChild('recorded', {}, fields) def del_fields(self): if self.mode is DATAFORM_SINGLE: @@ -335,7 +335,10 @@ class DataField(xmpp.Node, object): self.setAttr('var', var) def del_var(self): - self.delAttr('var') + try: + self.delAttr('var') + except KeyError: + pass var = property(get_var, set_var, del_var, """ Field name. """) @@ -347,7 +350,10 @@ class DataField(xmpp.Node, object): self.setAttr('label', label) def del_label(self): - self.delAttr('label') + try: + self.delAttr('label') + except KeyError: + pass label = property(get_label, set_label, del_label, """ Human-readable name for field. """) @@ -384,6 +390,14 @@ class DataField(xmpp.Node, object): required = property(get_required, set_required, None, """ If this is set to True, the field is required for form to be valid. """) + def iter_values(self): + assert self.type in ('list-single', 'list-multi', 'jid-multi') + + for element in self.getChildren(): + if not isinstance(element, xmpp.Node): continue + if not element.getName()=='value': continue + yield element.getData().decode('utf-8') + def get_value(self): if self.type in ('boolean',): if self.getTagData('value') in (1, 'true'): @@ -430,8 +444,10 @@ class DataField(xmpp.Node, object): for element in self.getChildren(): if not isinstance(element, xmpp.Node): continue if not element.getName()=='option': continue - if element.getTag('value') is None: raise BadDataFormNode - yield element.getAttr('label'), element.getTag('value').getData() + try: + yield element.getAttr('label'), element.getTag('value').getData() + except TypeError: + raise BadDataFormNode def get_options(self): """ Returns a list of tuples: (label, value). """ |