def subscriber( _context, for_=None, factory=None, handler=None, provides=None, permission=None, trusted=False, locate=False ): if factory is None: if handler is None: raise TypeError("No factory or handler provided") if provides is not None: raise TypeError("Cannot use handler with provides") factory = handler else: if handler is not None: raise TypeError("Cannot use handler with factory") if provides is None: raise TypeError("You must specify a provided interface when registering " "a factory") if for_ is None: for_ = adaptedBy(factory) if for_ is None: raise TypeError( "No for attribute was provided and can't " "determine what the factory (or handler) adapts." ) if permission is not None: factory = protectedFactory(factory, provides, permission) for_ = tuple(for_) # invoke custom adapter factories if locate or permission is not None or trusted: factory = securityAdapterFactory(factory, permission, locate, trusted) if handler is not None: _context.action( discriminator=None, callable=_handler, args=("registerHandler", handler, for_, _BLANK, _context.info) ) else: _context.action( discriminator=None, callable=_handler, args=("registerSubscriptionAdapter", factory, for_, provides, _BLANK, _context.info), ) if provides is not None: _context.action(discriminator=None, callable=provideInterface, args=("", provides)) # For each interface, state that the adapter provides that interface. for iface in for_: if iface is not None: _context.action(discriminator=None, callable=provideInterface, args=("", iface))
def adapter(_context, factory, provides=None, for_=None, permission=None, name="", trusted=False, locate=False): if for_ is None: if len(factory) == 1: for_ = adaptedBy(factory[0]) if for_ is None: raise TypeError("No for attribute was provided and can't " "determine what the factory adapts.") for_ = tuple(for_) if provides is None: if len(factory) == 1: p = list(implementedBy(factory[0])) if len(p) == 1: provides = p[0] if provides is None: raise TypeError("Missing 'provides' attribute") # Generate a single factory from multiple factories: factories = factory if len(factories) == 1: factory = factories[0] elif len(factories) < 1: raise ComponentConfigurationError("No factory specified") elif len(factories) > 1 and len(for_) != 1: raise ComponentConfigurationError("Can't use multiple factories and multiple for") else: factory = _rolledUpFactory(factories) if permission is not None: factory = protectedFactory(factory, provides, permission) # invoke custom adapter factories if locate or permission is not None or trusted: factory = securityAdapterFactory(factory, permission, locate, trusted) _context.action( discriminator=("adapter", for_, provides, name), callable=handler, args=("registerAdapter", factory, for_, provides, name, _context.info), ) _context.action(discriminator=None, callable=provideInterface, args=("", provides)) if for_: for iface in for_: if iface is not None: _context.action(discriminator=None, callable=provideInterface, args=("", iface))
def subscriber(_context, for_=None, factory=None, handler=None, provides=None, permission=None, trusted=False, locate=False): if factory is None: if handler is None: raise TypeError("No factory or handler provided") if provides is not None: raise TypeError("Cannot use handler with provides") factory = handler else: if handler is not None: raise TypeError("Cannot use handler with factory") if provides is None: raise TypeError( "You must specify a provided interface when registering " "a factory") if for_ is None: for_ = adaptedBy(factory) if for_ is None: raise TypeError("No for attribute was provided and can't " "determine what the factory (or handler) adapts.") if permission is not None: factory = protectedFactory(factory, provides, permission) for_ = tuple(for_) # invoke custom adapter factories if locate or permission is not None or trusted: factory = securityAdapterFactory(factory, permission, locate, trusted) if handler is not None: _context.action( discriminator=None, callable=_handler, args=('registerHandler', handler, for_, u'', _context.info), ) else: _context.action( discriminator=None, callable=_handler, args=('registerSubscriptionAdapter', factory, for_, provides, u'', _context.info), ) if provides is not None: _context.action(discriminator=None, callable=provideInterface, args=('', provides)) # For each interface, state that the adapter provides that interface. for iface in for_: if iface is not None: _context.action(discriminator=None, callable=provideInterface, args=('', iface))
def adapter(_context, factory, provides=None, for_=None, permission=None, name='', trusted=False, locate=False): if for_ is None: if len(factory) == 1: for_ = adaptedBy(factory[0]) if for_ is None: raise TypeError("No for attribute was provided and can't " "determine what the factory adapts.") for_ = tuple(for_) if provides is None: if len(factory) == 1: p = list(implementedBy(factory[0])) if len(p) == 1: provides = p[0] if provides is None: raise TypeError("Missing 'provides' attribute") if name == '': if len(factory) == 1: name = getName(factory[0]) # Generate a single factory from multiple factories: factories = factory if len(factories) == 1: factory = factories[0] elif len(factories) < 1: raise ComponentConfigurationError("No factory specified") elif len(factories) > 1 and len(for_) != 1: raise ComponentConfigurationError( "Can't use multiple factories and multiple for") else: factory = _rolledUpFactory(factories) if permission is not None: factory = protectedFactory(factory, provides, permission) # invoke custom adapter factories if locate or permission is not None or trusted: factory = securityAdapterFactory(factory, permission, locate, trusted) _context.action( discriminator=('adapter', for_, provides, name), callable=handler, args=('registerAdapter', factory, for_, provides, name, _context.info), ) _context.action(discriminator=None, callable=provideInterface, args=('', provides)) if for_: for iface in for_: if iface is not None: _context.action(discriminator=None, callable=provideInterface, args=('', iface))
def _callFUT(self, *args, **kw): from zope.component.security import securityAdapterFactory return securityAdapterFactory(*args, **kw)