Skip to content

Commit

Permalink
extend adapter directive with a locate attribute
Browse files Browse the repository at this point in the history
  • Loading branch information
Dominik Huber committed May 19, 2005
1 parent 042d6b3 commit cfa0b2a
Show file tree
Hide file tree
Showing 3 changed files with 715 additions and 20 deletions.
36 changes: 19 additions & 17 deletions metaconfigure.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
from zope.app import zapi
from zope.app.security.adapter import LocatingTrustedAdapterFactory
from zope.app.security.adapter import LocatingUntrustedAdapterFactory
from zope.app.security.adapter import TrustedAdapterFactory

PublicPermission = 'zope.Public'

Expand Down Expand Up @@ -62,7 +63,7 @@ def proxify(ob, checker):

_handler=handler
def subscriber(_context, for_=None, factory=None, handler=None, provides=None,
permission=None, trusted=False):
permission=None, trusted=False, locate=False):


if factory is None:
Expand Down Expand Up @@ -113,13 +114,14 @@ def factory(ob):
return ob

# invoke custom adapter factories
if trusted:
# trusted adapters that requires dedicated permission all the time
factory = LocatingTrustedAdapterFactory(factory)

elif permission is not None and permission is not CheckerPublic:
# untrusted adapters that requires any dedicated permission
factory = LocatingUntrustedAdapterFactory(factory)
if locate or (permission is not None and permission is not CheckerPublic):
if trusted:
factory = LocatingTrustedAdapterFactory(factory)
else:
factory = LocatingUntrustedAdapterFactory(factory)
else:
if trusted:
factory = TrustedAdapterFactory(factory)

_context.action(
discriminator = None,
Expand All @@ -145,7 +147,7 @@ def factory(ob):
)

def adapter(_context, factory, provides=None, for_=None, permission=None,
name='', trusted=False):
name='', trusted=False, locate=False):

if for_ is None:
if len(factory) == 1:
Expand Down Expand Up @@ -184,14 +186,14 @@ def adapter(_context, factory, provides=None, for_=None, permission=None,
factory = _protectedFactory(factory, checker)

# invoke custom adapter factories
if trusted:
# trusted adapters that requires dedicated permission all the time
factory = LocatingTrustedAdapterFactory(factory)

elif permission is not None and permission is not CheckerPublic:
# untrusted adapters that requires any dedicated permission
factory = LocatingUntrustedAdapterFactory(factory)

if locate or (permission is not None and permission is not CheckerPublic):
if trusted:
factory = LocatingTrustedAdapterFactory(factory)
else:
factory = LocatingUntrustedAdapterFactory(factory)
else:
if trusted:
factory = TrustedAdapterFactory(factory)

_context.action(
discriminator = ('adapter', for_, provides, name),
Expand Down
Loading

0 comments on commit cfa0b2a

Please sign in to comment.