Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/gajim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomasz Melcer <liori@exroot.org>2006-07-12 18:19:58 +0400
committerTomasz Melcer <liori@exroot.org>2006-07-12 18:19:58 +0400
commitdb089f103d71fd2c99d08acb3a68493143122b66 (patch)
treef7f3521dcaf30eeba8ac4587d9a8ac2ee886c320 /src/common/dataforms.py
parentaed92d21b76229524268df13a72b3e61d196894b (diff)
Jid-multi almost works.
Diffstat (limited to 'src/common/dataforms.py')
-rw-r--r--src/common/dataforms.py26
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). """