From b9f5755ad6a7588a3ba9d7f76190b6062bc50898 Mon Sep 17 00:00:00 2001 From: Tomasz Melcer Date: Mon, 20 Nov 2006 16:51:35 +0000 Subject: [PATCH] Use iterators, better for memory usage. --- src/common/dataforms.py | 12 +++++++----- src/common/xmpp/simplexml.py | 4 ++-- src/dataforms_widget.py | 2 +- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/common/dataforms.py b/src/common/dataforms.py index c046e76fc..afbc7951b 100644 --- a/src/common/dataforms.py +++ b/src/common/dataforms.py @@ -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): diff --git a/src/common/xmpp/simplexml.py b/src/common/xmpp/simplexml.py index 014134e83..aff4120cd 100644 --- a/src/common/xmpp/simplexml.py +++ b/src/common/xmpp/simplexml.py @@ -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". """ diff --git a/src/dataforms_widget.py b/src/dataforms_widget.py index 7b92fa422..c53992dab 100644 --- a/src/dataforms_widget.py +++ b/src/dataforms_widget.py @@ -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: