Skip to content
Snippets Groups Projects
Commit b9f5755a authored by Liorithiel's avatar Liorithiel
Browse files

Use iterators, better for memory usage.

parent 0e49ce38
No related branches found
No related tags found
No related merge requests found
......@@ -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:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment