From b9f5755ad6a7588a3ba9d7f76190b6062bc50898 Mon Sep 17 00:00:00 2001
From: Tomasz Melcer <liori@exroot.org>
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 c046e76fc2..afbc7951bf 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 014134e834..aff4120cd1 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 7b92fa422b..c53992dab6 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:
-- 
GitLab