comparison 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
comparison
equal deleted inserted replaced
3197:6d0b5937ee0d 3198:0b7990f54778
612 group = request.group 612 group = request.group
613 613
614 check = self._db.security.hasPermission 614 check = self._db.security.hasPermission
615 userid = self._client.userid 615 userid = self._client.userid
616 616
617 l = [HTMLItem(self._client, self.classname, x) 617 l = [HTMLItem(self._client, self.classname, id)
618 for id in self._klass.filter(None, filterspec, sort, group) 618 for id in self._klass.filter(None, filterspec, sort, group)
619 if check('View', userid, self.classname, itemid=id)] 619 if check('View', userid, self.classname, itemid=id)]
620 return l 620 return l
621 621
622 def classhelp(self, properties=None, label=''"(list)", width='500', 622 def classhelp(self, properties=None, label=''"(list)", width='500',
1686 l.append('</select>') 1686 l.append('</select>')
1687 return '\n'.join(l) 1687 return '\n'.join(l)
1688 # def checklist(self, ...) 1688 # def checklist(self, ...)
1689 1689
1690 1690
1691 def multilinkGenerator(classname, client, values):
1692 id = -1
1693 check = client.db.security.hasPermission
1694 userid = client.userid
1695 while 1:
1696 id += 1
1697 if id >= len(values):
1698 raise StopIteration
1699 value = values[id]
1700 if check('View', userid, classname, itemid=value):
1701 yield HTMLItem(client, classname, value)
1702
1703 1691
1704 class MultilinkHTMLProperty(HTMLProperty): 1692 class MultilinkHTMLProperty(HTMLProperty):
1705 ''' Multilink HTMLProperty 1693 ''' Multilink HTMLProperty
1706 1694
1707 Also be iterable, returning a wrapper object like the Link case for 1695 Also be iterable, returning a wrapper object like the Link case for
1721 1709
1722 def __getattr__(self, attr): 1710 def __getattr__(self, attr):
1723 ''' no extended attribute accesses make sense here ''' 1711 ''' no extended attribute accesses make sense here '''
1724 raise AttributeError, attr 1712 raise AttributeError, attr
1725 1713
1714 def multilinkGenerator(self, values):
1715 '''Used to iterate over only the View'able items in a class.'''
1716 check = self._db.security.hasPermission
1717 userid = self._client.userid
1718 classname = self._prop.classname
1719 for value in values:
1720 if check('View', userid, classname, itemid=value):
1721 yield HTMLItem(self._client, classname, value)
1722
1726 def __iter__(self): 1723 def __iter__(self):
1727 ''' iterate and return a new HTMLItem 1724 ''' iterate and return a new HTMLItem
1728 ''' 1725 '''
1729 return multilinkGenerator(self._prop.classname, self._client, 1726 return self.multilinkGenerator(self._value)
1730 self._value)
1731 1727
1732 def reverse(self): 1728 def reverse(self):
1733 ''' return the list in reverse order 1729 ''' return the list in reverse order
1734 ''' 1730 '''
1735 l = self._value[:] 1731 l = self._value[:]
1736 l.reverse() 1732 l.reverse()
1737 return multilinkGenerator(self._prop.classname, self._client, l) 1733 return self.multilinkGenerator(l)
1738 1734
1739 def sorted(self, property): 1735 def sorted(self, property):
1740 ''' Return this multilink sorted by the given property ''' 1736 ''' Return this multilink sorted by the given property '''
1741 value = list(self.__iter__()) 1737 value = list(self.__iter__())
1742 value.sort(lambda a,b:cmp(a[property], b[property])) 1738 value.sort(lambda a,b:cmp(a[property], b[property]))

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