[Zope] using getProperty and catching Unauthorized

Casey Duncan casey@zope.com
Fri, 25 Oct 2002 10:02:15 -0400


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.