Mercurial > p > roundup > code
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])) |
