diff roundup/cgi/templating.py @ 3194:f887e55edc94

replaced MutlilinkIterator with multilinkGenerator (thanks Bob Ippolito)
author Richard Jones <richard@users.sourceforge.net>
date Wed, 16 Feb 2005 03:32:26 +0000
parents 7faae85e1e33
children 0b7990f54778
line wrap: on
line diff
--- a/roundup/cgi/templating.py	Wed Feb 16 00:28:33 2005 +0000
+++ b/roundup/cgi/templating.py	Wed Feb 16 03:32:26 2005 +0000
@@ -1687,25 +1687,18 @@
         return '\n'.join(l)
 #    def checklist(self, ...)
 
-class MultilinkIterator:
-    def __init__(self, classname, client, values):
-        self.classname = classname
-        self.client = client
-        self.values = values
-        self.id = -1
-    def next(self):
-        '''Return the next item, but skip inaccessible items.'''
-        check = self.client.db.security.hasPermission
-        userid = self.client.userid
-        while 1:
-            self.id += 1
-            if self.id >= len(self.values):
-                raise StopIteration
-            value = self.values[self.id]
-            if check('View', userid, self.classname, itemid=value):
-                return HTMLItem(self.client, self.classname, value)
-    def __iter__(self):
-        return self
+
+def multilinkGenerator(classname, client, values):
+    id = -1
+    check = client.db.security.hasPermission
+    userid = client.userid
+    while 1:
+        id += 1
+        if id >= len(values):
+            raise StopIteration
+        value = values[id]
+        if check('View', userid, classname, itemid=value):
+            yield HTMLItem(client, classname, value)
 
 
 class MultilinkHTMLProperty(HTMLProperty):
@@ -1733,7 +1726,7 @@
     def __iter__(self):
         ''' iterate and return a new HTMLItem
         '''
-        return MultilinkIterator(self._prop.classname, self._client,
+        return multilinkGenerator(self._prop.classname, self._client,
             self._value)
 
     def reverse(self):
@@ -1741,7 +1734,7 @@
         '''
         l = self._value[:]
         l.reverse()
-        return MultilinkIterator(self._prop.classname, self._client, l)
+        return multilinkGenerator(self._prop.classname, self._client, l)
 
     def sorted(self, property):
         ''' Return this multilink sorted by the given property '''

Roundup Issue Tracker: http://roundup-tracker.org/