diff roundup/cgi/templating.py @ 3198:0b7990f54778

fixed broken csv import in roundup.admin module fixed braino in HTMLClass.filter() [SF#1124213] (also, better generator)
author Richard Jones <richard@users.sourceforge.net>
date Wed, 16 Feb 2005 21:52:32 +0000
parents f887e55edc94
children d2b1a946fdf4
line wrap: on
line diff
--- a/roundup/cgi/templating.py	Wed Feb 16 14:22:16 2005 +0000
+++ b/roundup/cgi/templating.py	Wed Feb 16 21:52:32 2005 +0000
@@ -614,7 +614,7 @@
         check = self._db.security.hasPermission
         userid = self._client.userid
 
-        l = [HTMLItem(self._client, self.classname, x)
+        l = [HTMLItem(self._client, self.classname, id)
              for id in self._klass.filter(None, filterspec, sort, group)
              if check('View', userid, self.classname, itemid=id)]
         return l
@@ -1688,18 +1688,6 @@
 #    def checklist(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):
     ''' Multilink HTMLProperty
@@ -1723,18 +1711,26 @@
         ''' no extended attribute accesses make sense here '''
         raise AttributeError, attr
 
+    def multilinkGenerator(self, values):
+        '''Used to iterate over only the View'able items in a class.'''
+        check = self._db.security.hasPermission
+        userid = self._client.userid
+        classname = self._prop.classname
+        for value in values:
+            if check('View', userid, classname, itemid=value):
+                yield HTMLItem(self._client, classname, value)
+
     def __iter__(self):
         ''' iterate and return a new HTMLItem
         '''
-        return multilinkGenerator(self._prop.classname, self._client,
-            self._value)
+        return self.multilinkGenerator(self._value)
 
     def reverse(self):
         ''' return the list in reverse order
         '''
         l = self._value[:]
         l.reverse()
-        return multilinkGenerator(self._prop.classname, self._client, l)
+        return self.multilinkGenerator(l)
 
     def sorted(self, property):
         ''' Return this multilink sorted by the given property '''

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