Mercurial > p > roundup > code
view roundup/cgi/PageTemplates/PathIterator.py @ 5272:c6fbd4803eae
If you upgrade to the newer query edit interface but did not allow
users full access to search queries, the edit interface displays
public queries that the user does not own in the section labeled
"Queries I created".
Updated upgrading.txt to discuss this problem and link back to the
1.4.17 upgrading instructions. Also included schema.py permissions
that can be used to make the edit interface work correctly without
allow full search access for queries.
Updated the test script in the 1.4.17 upgrading instructions to
display protected properties (like creator) to make dignosing this
easier.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Sat, 23 Sep 2017 13:05:48 -0400 |
| parents | 6e3e4f24c753 |
| children | d26921b851c3 |
line wrap: on
line source
############################################################################## # # Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved. # # This software is subject to the provisions of the Zope Public License, # Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution. # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS # FOR A PARTICULAR PURPOSE # ############################################################################## """Path Iterator A TALES Iterator with the ability to use first() and last() on subpaths of elements. """ import TALES from Expressions import restrictedTraverse, Undefs, getSecurityManager class Iterator(TALES.Iterator): def __bobo_traverse__(self, REQUEST, name): if name in ('first', 'last'): path = REQUEST['TraversalRequestNameStack'] names = list(path) names.reverse() path[:] = [tuple(names)] return getattr(self, name) def same_part(self, name, ob1, ob2): if name is None: return ob1 == ob2 if isinstance(name, type('')): name = name.split('/') name = filter(None, name) securityManager = getSecurityManager() try: ob1 = restrictedTraverse(ob1, name, securityManager) ob2 = restrictedTraverse(ob2, name, securityManager) except Undefs: return 0 return ob1 == ob2
