Use iterators, better for memory usage.
This commit is contained in:
parent
0e49ce389b
commit
b9f5755ad6
|
@ -48,7 +48,9 @@ def Field(typ, **attrs):
|
|||
|
||||
def ExtendField(node):
|
||||
''' Helper function to extend a node to field of appropriate type. '''
|
||||
# TODO: move the dict out
|
||||
# when validation (XEP-122) will go in, we could have another classes
|
||||
# like DateTimeField - so that dicts in Field() and ExtendField() will
|
||||
# be different...
|
||||
typ=node.getAttr('type')
|
||||
f = {
|
||||
'boolean': BooleanField,
|
||||
|
@ -216,7 +218,7 @@ class ListField(DataField):
|
|||
return locals()
|
||||
|
||||
def iter_options(self):
|
||||
for element in self.getTags('option'): # TODO: iter!
|
||||
for element in self.iterTags('option'):
|
||||
v = element.getTagData('value')
|
||||
if v is None: raise WrongFieldValue
|
||||
yield (v, element.getAttr('label'))
|
||||
|
@ -254,7 +256,7 @@ class TextMultiField(DataField):
|
|||
'''Value held in field.'''
|
||||
def fget(self):
|
||||
value = u''
|
||||
for element in self.getTags('value'): # TODO: iter!
|
||||
for element in self.iterTags('value'):
|
||||
value += '\n' + element.getData()
|
||||
return value[1:]
|
||||
def fset(self, value):
|
||||
|
@ -282,7 +284,7 @@ class DataRecord(ExtendedNode):
|
|||
# we already have xmpp.Node inside - try to convert all
|
||||
# fields into DataField objects
|
||||
if fields is None:
|
||||
for field in self.getTags('field'): # TODO: iter!
|
||||
for field in self.iterTags('field'):
|
||||
if not isinstance(field, DataField):
|
||||
ExtendField(field)
|
||||
self.vars[field.var] = field
|
||||
|
@ -310,7 +312,7 @@ class DataRecord(ExtendedNode):
|
|||
def iter_fields(self):
|
||||
''' Iterate over fields in this record. Do not take associated
|
||||
into account. '''
|
||||
for field in self.getTags('field'): # TODO: iter!
|
||||
for field in self.iterTags('field'):
|
||||
yield field
|
||||
|
||||
def iter_with_associated(self):
|
||||
|
|
|
@ -200,8 +200,8 @@ class Node(object):
|
|||
for key in attrs.keys():
|
||||
if not node.attrs.has_key(key) or \
|
||||
node.attrs[key]!=attrs[key]: break
|
||||
else:
|
||||
yield node
|
||||
else:
|
||||
yield node
|
||||
|
||||
def setAttr(self, key, val):
|
||||
""" Sets attribute "key" with the value "val". """
|
||||
|
|
|
@ -76,7 +76,7 @@ class DataFormWidget(gtk.Alignment, object):
|
|||
# form is single
|
||||
instructions = _('This is result of query.')
|
||||
else:
|
||||
# form is writable (TODO: move that to build_*_data_form()?
|
||||
# form is writable (TODO: move that to build_*_data_form()?)
|
||||
if isinstance(dataform, dataforms.SimpleDataForm):
|
||||
instructions = _('Fill in the form.')
|
||||
else:
|
||||
|
|
Loading…
Reference in New Issue