def unregisterHandler(self, factory=None, required=None, name=_u('')): if name: raise TypeError("Named subscribers are not yet supported") if (required is None) and (factory is None): raise TypeError("Must specify one of factory and required") required = _getAdapterRequired(factory, required) if factory is None: new = [(r, n, f, i) for (r, n, f, i) in self._handler_registrations if r != required] else: new = [(r, n, f, i) for (r, n, f, i) in self._handler_registrations if not (r == required and f == factory)] if len(new) == len(self._handler_registrations): return False self._handler_registrations[:] = new self.adapters.unsubscribe(required, None, factory) notify( Unregistered(HandlerRegistration(self, required, name, factory, ''))) return True
def unregisterAdapter( self, factory=None, required=None, provided=None, name=_u(''), ): if provided is None: if factory is None: raise TypeError("Must specify one of factory and provided") provided = _getAdapterProvided(factory) if (required is None) and (factory is None): raise TypeError("Must specify one of factory and required") required = _getAdapterRequired(factory, required) old = self._adapter_registrations.get((required, provided, name)) if (old is None) or ((factory is not None) and (factory != old[0])): return False del self._adapter_registrations[(required, provided, name)] self.adapters.unregister(required, provided, name) notify( Unregistered( AdapterRegistration(self, required, provided, name, *old))) return True
def unregisterUtility(self, component=None, provided=None, name=u'', factory=None): if factory: if component: raise TypeError("Can't specify factory and component.") component = factory() if provided is None: if component is None: raise TypeError("Must specify one of component, factory and " "provided") provided = _getUtilityProvided(component) old = self._utility_registrations.get((provided, name)) if (old is None) or ((component is not None) and (component != old[0])): return False if component is None: component = old[0] # Note that component is now the old thing registered self._utility_registrations_cache.unregisterUtility( provided, name, component) notify( Unregistered( UtilityRegistration(self, provided, name, component, *old[1:]))) return True
def unregisterUtility(self, component=None, provided=None, name=_u(''), factory=None): if factory: if component: raise TypeError("Can't specify factory and component.") component = factory() if provided is None: if component is None: raise TypeError("Must specify one of component, factory and " "provided") provided = _getUtilityProvided(component) old = self._utility_registrations.get((provided, name)) if (old is None) or ((component is not None) and (component != old[0])): return False if component is None: component = old[0] # Note that component is now the old thing registered del self._utility_registrations[(provided, name)] self.utilities.unregister((), provided, name) subscribed = False for ((p, _), data) in iter(self._utility_registrations.items()): if p == provided and data[0] == component: subscribed = True break if not subscribed: self.utilities.unsubscribe((), provided, component) notify( Unregistered( UtilityRegistration(self, provided, name, component, *old[1:]))) return True
def unregisterSubscriptionAdapter( self, factory=None, required=None, provided=None, name=u'', ): if name: raise TypeError("Named subscribers are not yet supported") if provided is None: if factory is None: raise TypeError("Must specify one of factory and provided") provided = _getAdapterProvided(factory) if (required is None) and (factory is None): raise TypeError("Must specify one of factory and required") required = _getAdapterRequired(factory, required) if factory is None: new = [(r, p, n, f, i) for (r, p, n, f, i) in self._subscription_registrations if not (r == required and p == provided)] else: new = [(r, p, n, f, i) for (r, p, n, f, i) in self._subscription_registrations if not (r == required and p == provided and f == factory)] if len(new) == len(self._subscription_registrations): return False self._subscription_registrations[:] = new self.adapters.unsubscribe(required, provided, factory) notify( Unregistered( SubscriptionRegistration(self, required, provided, name, factory, ''))) return True