I think the following should do what you want: for foo in bar.objectvalues() try: mo = foo.getProperty('menu_order', None) except 'Unauthorized': continue ..do stuff.. hth, -Casey On Thu, 24 Oct 2002 21:09:07 -0500 "John K. Hohm" <jhohm@acm.org> wrote:
Using Zope 2.6.0, I have a script that returns a list of items to be shown in a navigation menu. I want to show only items where both a menu_order property exists and the user has permission to view the object (which will not always be controlled by 'View'). I can't use foo.getProperty('menu_order', None) because it will raise Unauthorized for objects the user has no permissions on. I can't use getattr(foo, 'menu_order', None) because foo will acquire menu_order, and I can't pass foo.aq_base or Acquisition.aq_base(foo) to getattr because aq_base will raise Unauthorized. If I could catch Unauthorized without also catching more serious errors, I could use getProperty, but I don't know how to do that.