def test_named_hit(self): from zope.interface import Interface from zope.interface import implementer from zope.component import getGlobalSiteManager class IFoo(Interface): pass class IBar(Interface): pass class IBaz(Interface): pass @implementer(IBar) class Bar(object): pass @implementer(IBaz) class Baz(object): pass @implementer(IFoo) class FooAdapter(object): def __init__(self, first, second): self.first, self.second = first, second getGlobalSiteManager().registerAdapter(FooAdapter, (IBar, IBaz), IFoo, 'named') bar = Bar() baz = Baz() adapted = self._callFUT((bar, baz), IFoo, 'named') self.assertTrue(adapted.__class__ is FooAdapter) self.assertTrue(adapted.first is bar) self.assertTrue(adapted.second is baz)
def test_named_hit(self): from zope.interface import Interface from zope.interface import implementer from zope.component import getGlobalSiteManager class IFoo(Interface): pass class IBar(Interface): pass @implementer(IBar) class Bar(object): pass @implementer(IFoo) class Baz(object): def __init__(self, context): self.context = context getGlobalSiteManager().registerAdapter(Baz, (IBar, ), IFoo, 'named') bar = Bar() adapted = self._callFUT(bar, IFoo, 'named') self.assertTrue(adapted.__class__ is Baz) self.assertTrue(adapted.context is bar)
def test_named_hit(self): from zope.interface import Interface from zope.interface import implementer from zope.component import getGlobalSiteManager class IFoo(Interface): pass class IBar(Interface): pass class IBaz(Interface): pass @implementer(IBar) class Bar(object): pass @implementer(IBaz) class Baz(object): pass @implementer(IFoo) class FooAdapter(object): def __init__(self, first, second): self.first, self.second = first, second getGlobalSiteManager().registerAdapter( FooAdapter, (IBar, IBaz), IFoo, 'named') bar = Bar() baz = Baz() adapted = self._callFUT((bar, baz), IFoo, 'named') self.assertTrue(adapted.__class__ is FooAdapter) self.assertTrue(adapted.first is bar) self.assertTrue(adapted.second is baz)
def test_named_hit(self): from zope.interface import Interface from zope.component import getGlobalSiteManager class IFoo(Interface): pass obj = object() getGlobalSiteManager().registerUtility(obj, IFoo, name='bar') self.assertTrue(self._callFUT(IFoo, name='bar') is obj)
def test_hit(self): from zope.interface import Interface from zope.component import getGlobalSiteManager class IFoo(Interface): pass obj = object() obj1 = object() getGlobalSiteManager().registerUtility(obj, IFoo) getGlobalSiteManager().registerUtility(obj1, IFoo, name='bar') tuples = list(self._callFUT(IFoo)) self.assertEqual(len(tuples), 2) self.assertTrue(('', obj) in tuples) self.assertTrue(('bar', obj1) in tuples)
def test_anonymous_hit_registered_for_None(self): from zope.interface import Interface from zope.interface import implementer from zope.component import getGlobalSiteManager class IFoo(Interface): pass @implementer(IFoo) class Baz(object): def __init__(self, context): self.context = context getGlobalSiteManager().registerAdapter(Baz, (None,), IFoo, '') ctx = object() adapted = self._callFUT(ctx, IFoo, '') self.assertTrue(adapted.__class__ is Baz) self.assertTrue(adapted.context is ctx)
def test_hit(self): from zope.component import getGlobalSiteManager from zope.interface import Interface from zope.interface import implementer class IFoo(Interface): pass @implementer(IFoo) class Foo(object): pass _called = [] def _bar(context): _called.append('_bar') def _baz(context): _called.append('_baz') gsm = getGlobalSiteManager() gsm.registerHandler(_bar, (IFoo, )) gsm.registerHandler(_baz, (IFoo, )) self._callFUT(Foo()) self.assertEqual(len(_called), 2, _called) self.assertTrue('_bar' in _called) self.assertTrue('_baz' in _called)
def register_utilities(worker_config, auction_id): gsm = getGlobalSiteManager() # Register datasource datasource_config = worker_config.get('datasource', {}) datasource_config.update(auction_id=auction_id) datasource = prepare_datasource(datasource_config) gsm.registerUtility(datasource, IDataSource) # Register database database_config = worker_config.get('database', {}) database = prepare_database(database_config) gsm.registerUtility(database, IDatabase) # Register context context_config = worker_config.get('context', {}) context = prepare_context(context_config) context['auction_doc_id'] = auction_id context['worker_defaults'] = worker_config # Initializing semaphore which is used for locking WSGI server actions # during applying bids or updating auction document context['server_actions'] = BoundedSemaphore() gsm.registerUtility(context, IContext) # Register JobService job_service = prepare_job_service() gsm.registerUtility(job_service, IJobService)
def test_named_w_provides_w_adapts(self): from zope.interface import Interface from zope.interface import implementer from zope.component.globalregistry import getGlobalSiteManager class IFoo(Interface): pass class IBar(Interface): pass @implementer(IFoo) class Foo(object): pass class Bar(object): def __init__(self, context): self.context = context self._callFUT(Bar, (IFoo, ), IBar, 'test') gsm = getGlobalSiteManager() foo = Foo() adapted = gsm.getAdapter(foo, IBar, name='test') self.assertTrue(isinstance(adapted, Bar)) self.assertTrue(adapted.context is foo)
def test_hit_via_sm(self): from zope.interface import Interface from zope.interface import implementer from zope.interface.registry import Components from zope.component import getGlobalSiteManager from zope.component.tests.examples import ConformsToIComponentLookup class IFoo(Interface): pass class IBar(Interface): pass @implementer(IFoo) class Global(object): __init__ = fails_if_called(self) @implementer(IFoo) class Local(object): def __init__(self, context): self.context = context @implementer(IBar) class Bar(object): pass class Context(ConformsToIComponentLookup): def __init__(self, sm): self.sitemanager = sm gsm = getGlobalSiteManager() gsm.registerAdapter(Global, (IBar,), IFoo, '') sm1 = Components('sm1', bases=(gsm, )) sm1.registerAdapter(Local, (IBar,), IFoo, '') bar = Bar() adapted = self._callFUT(bar, IFoo, context=Context(sm1)) self.assertTrue(adapted.__class__ is Local) self.assertTrue(adapted.context is bar)
def test_w_None(self): from zope.component import hooks from zope.component.globalregistry import getGlobalSiteManager gsm = getGlobalSiteManager() siteinfo = _DummySiteInfo() with _Monkey(hooks, siteinfo=siteinfo): self.assertTrue(self._callFUT() is None)
def test_it(self): from zope.interface import Interface from zope.interface import implementer from zope.component.globalregistry import getGlobalSiteManager from zope.component.interfaces import IObjectEvent from zope.component.event import objectEventNotify _adapted = [] def _adapter(context, event): _adapted.append((context, event)) return object() gsm = getGlobalSiteManager() gsm.registerHandler(_adapter, (Interface, IObjectEvent)) del _adapted[:] # clear handler reg @implementer(IObjectEvent) class _ObjectEvent(object): def __init__(self, object): self.object = object context = object() event = _ObjectEvent(context) objectEventNotify(event) self.assertEqual(_adapted, [(context, event)])
def test_hit_in_current_site(self): from zope.component._api import getSiteManager from zope.component.globalregistry import getGlobalSiteManager from zope.interface.registry import Components from zope.interface import Interface from zope.interface.interfaces import IInterface class ILocal(Interface): pass class IGlobal(Interface): pass gsm = getGlobalSiteManager() site_man = Components(bases=(gsm,)) def get(_context=None): return site_man getSiteManager.sethook(get) self.addCleanup(getSiteManager.reset) gsm.registerUtility(IGlobal, IInterface, 'foo') site_man.registerUtility(ILocal, IInterface, 'bar') result = self._callFUT(None) self.assertEqual(len(result), 2) self.assertIn(ILocal, result) self.assertIn(IGlobal, result) getSiteManager.reset() result = self._callFUT(None) self.assertEqual(len(result), 1) self.assertIn(IGlobal, result)
def test_w_provides_w_adapts(self): from zope.interface import Interface from zope.interface import implementer from zope.component.globalregistry import getGlobalSiteManager class IFoo(Interface): pass class IBar(Interface): pass @implementer(IFoo) class Foo(object): pass class Bar(object): def __init__(self, context): self.context = context self._callFUT(Bar, (IFoo, ), IBar) gsm = getGlobalSiteManager() foo = Foo() adapted = gsm.subscribers((foo, ), IBar) self.assertEqual(len(adapted), 1) self.assertTrue(isinstance(adapted[0], Bar)) self.assertTrue(adapted[0].context is foo)
def test_extra_csv_columns(self): csv_with_extra = ('Title,something,something_else\n' 'TY,asdf,qwer\n') extra_data = [] class UrlAdapter(object): interface.implements(ICSVImportExtraColumns) component.adapts(INyURL) def __init__(self, ob): self.ob = ob def handle_columns(self, extra_properties): extra_data.append(extra_properties) reg = getGlobalSiteManager() reg.registerAdapter(UrlAdapter) do_import_object(self, 'Naaya URL', csv_with_extra, 'imported') self.assertEqual(self.portal.imported['ty'].title, 'TY') self.assertEqual(extra_data, [{ 'something': 'asdf', 'something_else': 'qwer' }]) reg.unregisterAdapter(UrlAdapter)
def test_anonymous_no_provides_no_adapts(self): from zope.interface import Interface from zope.interface import implementer from zope.component.globalregistry import getGlobalSiteManager from zope.component._declaration import adapter class IFoo(Interface): pass class IBar(Interface): pass @implementer(IFoo) class Foo(object): pass @adapter(IFoo) @implementer(IBar) class Bar(object): def __init__(self, context): self.context = context self._callFUT(Bar) gsm = getGlobalSiteManager() foo = Foo() adapted = gsm.getAdapter(foo, IBar) self.assertTrue(isinstance(adapted, Bar)) self.assertTrue(adapted.context is foo)
def test_w_conforming_context(self): from zope.interface import Interface from zope.component import getGlobalSiteManager from zope.component.tests.examples import ConformsToIComponentLookup class SM(object): def __init__(self, obj): self._obj = obj def queryUtility(self, interface, name, default): return self._obj class IFoo(Interface): pass obj1 = object() obj2 = object() sm = SM(obj2) context = ConformsToIComponentLookup(sm) getGlobalSiteManager().registerUtility(obj1, IFoo) self.assertTrue(self._callFUT(IFoo, context=context) is obj2)
def test_global(self): from zope.component import getGlobalSiteManager from zope.component.interface import ComponentLookupError gsm = getGlobalSiteManager() gutil = _makeMyUtility('global', gsm) gsm.registerUtility(gutil, IMyUtility, 'myutil') self.assertRaises(ComponentLookupError, self._callFUT, gutil, IMyUtility, 'myutil')
def test_anonymous_hit_registered_for_None(self): from zope.interface import Interface from zope.interface import implementer from zope.component import getGlobalSiteManager class IFoo(Interface): pass @implementer(IFoo) class Baz(object): def __init__(self, context): self.context = context getGlobalSiteManager().registerAdapter(Baz, (None, ), IFoo, '') ctx = object() adapted = self._callFUT(ctx, IFoo, '') self.assertTrue(adapted.__class__ is Baz) self.assertTrue(adapted.context is ctx)
def test_hit(self): from zope.interface import Interface from zope.interface.interfaces import IInterface from zope.component.globalregistry import getGlobalSiteManager gsm = getGlobalSiteManager() class IFoo(Interface): pass gsm.registerUtility(IFoo, IInterface, 'foo') self.assertTrue(self._callFUT(object(), 'foo') is IFoo)
def test_default(self): from zope.component import hooks from zope.component.globalregistry import getGlobalSiteManager gsm = getGlobalSiteManager() _SM2 = object() siteinfo = _DummySiteInfo() siteinfo.sm = _SM2 with _Monkey(hooks, siteinfo=siteinfo): self.assertTrue(self._callFUT() is _SM2)
def test_w_explicit_context_no_IComponentLookup(self): from zope.component import hooks from zope.component.globalregistry import getGlobalSiteManager gsm = getGlobalSiteManager() _SM2 = object() siteinfo = _DummySiteInfo() siteinfo.sm = _SM2 with _Monkey(hooks, siteinfo=siteinfo): self.assertTrue(self._callFUT(object()) is gsm)
class SiteInfo(threading.local): site = None sm = getGlobalSiteManager() @read_property def adapter_hook(self): adapter_hook = self.sm.adapters.adapter_hook self.adapter_hook = adapter_hook return adapter_hook
def test_no_search_string_no_base(self): from zope.interface import Interface from zope.interface.interfaces import IInterface from zope.component.globalregistry import getGlobalSiteManager gsm = getGlobalSiteManager() class IFoo(Interface): pass gsm.registerUtility(IFoo, IInterface, 'foo') self.assertEqual(self._callFUT(object()), [('foo', IFoo)])
def _getTraverser(self, context, request): class FakeCaseInsensitiveConfiglet(object): implements(ICaseInsensitiveConfiglet) isNonCaseInsensitive = True gsm = getGlobalSiteManager() fakeCIC = FakeCaseInsensitiveConfiglet() gsm.registerUtility(fakeCIC) return CaseInsensitiveFolderTraverser(context, request)
def test_hit(self): from zope.interface import Interface from zope.interface.interfaces import IInterface from zope.component.globalregistry import getGlobalSiteManager gsm = getGlobalSiteManager() class IFoo(Interface): pass gsm.registerUtility(IFoo, IInterface, 'foo') self.assertTrue(self._callFUT('foo') is IFoo)
def test_getSiteManager_w_invalid_context_w_adapter(self): from zope.interface import Interface from zope.component.globalregistry import getGlobalSiteManager from zope.interface.interfaces import IComponentLookup gsm = getGlobalSiteManager() sm = object() def _adapt(x): return sm gsm.registerAdapter(_adapt, (Interface,), IComponentLookup, '') self.assertTrue(self._callFUT(object()) is sm)
def test_w_registered(self): from zope.interface import Interface from zope.interface.interfaces import IInterface from zope.component.globalregistry import getGlobalSiteManager gsm = getGlobalSiteManager() class IFoo(Interface): pass gsm.registerUtility(IFoo, IInterface, 'foo') self.assertEqual(self._callFUT(object(), IFoo), 'zope.component.tests.test_interface.IFoo')
def test_w_name_wo_ifact_type(self): from zope.interface import Interface from zope.interface.interfaces import IInterface from zope.component.globalregistry import getGlobalSiteManager gsm = getGlobalSiteManager() class IFoo(Interface): pass self._callFUT('foo', IFoo) self.assertTrue(IInterface.providedBy(IFoo)) registered = gsm.getUtility(IInterface, name='foo') self.assertTrue(registered is IFoo)
def test_named_w_provides(self): from zope.interface import Interface from zope.component.globalregistry import getGlobalSiteManager class IFoo(Interface): pass class Foo(object): pass foo = Foo() self._callFUT(foo, IFoo, 'named') gsm = getGlobalSiteManager() self.assertTrue(gsm.getUtility(IFoo, 'named') is foo)
def test_w_name_wo_ifact_type(self): from zope.interface import Interface from zope.interface.interfaces import IInterface from zope.component.globalregistry import getGlobalSiteManager gsm = getGlobalSiteManager() class IFoo(Interface): pass self._callFUT('foo', IFoo) self.assertTrue(IInterface.providedBy(IFoo)) registered = gsm.getUtility(IInterface, name='foo') self.assertIs(registered, IFoo)
def test_w_class(self): from zope.interface.interfaces import IInterface from zope.component.globalregistry import getGlobalSiteManager gsm = getGlobalSiteManager() class IBar(IInterface): pass class Foo(object): pass self._callFUT('', Foo, IBar) self.assertFalse(IBar.providedBy(Foo)) self.assertEqual(len(list(gsm.getUtilitiesFor(IBar))), 0)
def makeSite(self): if IObjectManagerSite.providedBy(self.context): raise ValueError('This is already a site') enableSite(self.context, iface=IObjectManagerSite) # TODO in the future we'll have to walk up to other site # managers and put them in the bases components = PersistentComponents() components.__bases__ = (getGlobalSiteManager(), ) self.context.setSiteManager(components)
def test_named_hit(self): from zope.interface import Interface from zope.interface import implementer from zope.component import getGlobalSiteManager class IFoo(Interface): pass class IBar(Interface): pass @implementer(IBar) class Bar(object): pass @implementer(IFoo) class Baz(object): def __init__(self, context): self.context = context getGlobalSiteManager().registerAdapter(Baz, (IBar,), IFoo, 'named') bar = Bar() adapted = self._callFUT(bar, IFoo, 'named') self.assertTrue(adapted.__class__ is Baz) self.assertTrue(adapted.context is bar)
def makeSite(self): if IObjectManagerSite.providedBy(self.context): raise ValueError('This is already a site') enableSite(self.context, iface=IObjectManagerSite) # TODO in the future we'll have to walk up to other site # managers and put them in the bases components = PersistentComponents() components.__bases__ = (getGlobalSiteManager(),) self.context.setSiteManager(components)
def test_getSiteManager_w_invalid_context_w_adapter(self): from zope.interface import Interface from zope.component.globalregistry import getGlobalSiteManager from zope.component.interfaces import IComponentLookup gsm = getGlobalSiteManager() sm = object() def _adapt(x): return sm gsm.registerAdapter(_adapt, (Interface, ), IComponentLookup, '') self.assertTrue(self._callFUT(object()) is sm)
def test_anonymous_no_provides(self): from zope.interface import Interface from zope.interface import implementer from zope.component.globalregistry import getGlobalSiteManager class IFoo(Interface): pass @implementer(IFoo) class Foo(object): pass foo = Foo() self._callFUT(foo) gsm = getGlobalSiteManager() self.assertTrue(gsm.getUtility(IFoo, '') is foo)
def test_wo_name_w_iface_type(self): from zope.interface import Interface from zope.interface.interfaces import IInterface from zope.component.globalregistry import getGlobalSiteManager gsm = getGlobalSiteManager() class IFoo(Interface): pass class IBar(IInterface): pass self._callFUT('', IFoo, IBar) self.assertTrue(IBar.providedBy(IFoo)) nm = 'zope.component.tests.test_interface.IFoo' self.assertTrue(gsm.getUtility(IBar, nm) is IFoo)
def test_w_adapts(self): from zope.interface import Interface from zope.component.globalregistry import getGlobalSiteManager class IFoo(Interface): pass _handler = fails_if_called(self) self._callFUT(_handler, (IFoo,)) gsm = getGlobalSiteManager() regs = list(gsm.registeredHandlers()) self.assertEqual(len(regs), 1) hr = regs[0] self.assertEqual(list(hr.required), [IFoo]) self.assertEqual(hr.name, '') self.assertTrue(hr.factory is _handler)
def test_it(self): from zope.interface import Interface from zope.component.globalregistry import getGlobalSiteManager from zope.component.event import dispatch _adapted = [] def _adapter(context): _adapted.append(context) return object() gsm = getGlobalSiteManager() gsm.registerHandler(_adapter, (Interface,)) del _adapted[:] # clear handler reg event = object() dispatch(event) self.assertEqual(_adapted, [event])
def searchInterfaceUtilities(context, search_string=None, base=None): gsm = getGlobalSiteManager() iface_utilities = gsm.getUtilitiesFor(IInterface) if search_string: search_string = search_string.lower() iface_utilities = [iface_util for iface_util in iface_utilities if (getInterfaceAllDocs(iface_util[1]).\ find(search_string) >= 0)] if base: res = [iface_util for iface_util in iface_utilities if iface_util[1].isOrExtends(base)] else: res = [iface_util for iface_util in iface_utilities] return res
def test_w_adapts(self): from zope.interface import Interface from zope.component.globalregistry import getGlobalSiteManager class IFoo(Interface): pass def _handler(context): assert 0, "DON'T GO HERE" self._callFUT(_handler, (IFoo,)) gsm = getGlobalSiteManager() regs = list(gsm.registeredHandlers()) self.assertEqual(len(regs), 1) hr = regs[0] self.assertEqual(list(hr.required), [IFoo]) self.assertEqual(hr.name, '') self.assertTrue(hr.factory is _handler)
def test_w_None(self): from zope.component import hooks from zope.component.globalregistry import getGlobalSiteManager gsm = getGlobalSiteManager() _SM2 = object() _SITE = object() _HOOK = object() siteinfo = _DummySiteInfo() siteinfo.sm = _SM2 siteinfo.site = _SITE siteinfo.adapterhook = _HOOK with _Monkey(hooks, siteinfo=siteinfo): self._callFUT(None) self.assertTrue(siteinfo.sm is gsm) self.assertTrue(siteinfo.site is None) self.assertFalse('adapter_hook' in siteinfo.__dict__)
def test_nested(self): from zope.component import getGlobalSiteManager from zope.interface.interfaces import IComponentLookup from zope.interface.registry import Components gsm = getGlobalSiteManager() gutil = _makeMyUtility('global', gsm) gsm.registerUtility(gutil, IMyUtility, 'myutil') sm1 = Components('sm1', bases=(gsm, )) sm1_1 = Components('sm1_1', bases=(sm1, )) util1 = _makeMyUtility('one', sm1) sm1.registerUtility(util1, IMyUtility, 'myutil') self.assertTrue(IComponentLookup(util1) is sm1) self.assertTrue(self._callFUT(util1, IMyUtility, 'myutil') is gutil) util1_1 = _makeMyUtility('one-one', sm1_1) sm1_1.registerUtility(util1_1, IMyUtility, 'myutil') self.assertTrue(IComponentLookup(util1_1) is sm1_1) self.assertTrue(self._callFUT(util1_1, IMyUtility, 'myutil') is util1)
def registerResourceDirectory(name, directory, layer=IDefaultBrowserLayer, permission='zope.Public'): """ This function registers a resource directory with global registry. """ if os.path.exists(directory): logging.info('Registering %s as %s', directory, name) if permission == 'zope.Public': permission = CheckerPublic checker = NamesChecker(allowed_names + ('__getitem__', 'get'), permission) factory = DirectoryResourceFactory(directory, checker, name) gsm = getGlobalSiteManager() gsm.registerAdapter(factory, (layer,), Interface, name)
def test_w_explicit_context_w_IComponentLookup(self): from zope.interface import Interface from zope.component import hooks from zope.component.globalregistry import getGlobalSiteManager from zope.component.interfaces import IComponentLookup class _Lookup(object): def __init__(self, context): self.context = context gsm = getGlobalSiteManager() gsm.registerAdapter(_Lookup, (Interface,), IComponentLookup, '') _SM2 = object() siteinfo = _DummySiteInfo() siteinfo.sm = _SM2 context = object() with _Monkey(hooks, siteinfo=siteinfo): sm = self._callFUT(context) self.assertTrue(isinstance(sm, _Lookup)) self.assertTrue(sm.context is context)
def test_it(self): from zope.component import hooks from zope.component.globalregistry import getGlobalSiteManager gsm = getGlobalSiteManager() _SM2 = object() class _Site(object): def getSiteManager(self): return _SM2 _site = _Site() siteinfo = _DummySiteInfo() self.assertTrue(siteinfo.site is None) self.assertTrue(siteinfo.sm is _SM) with _Monkey(hooks, siteinfo=siteinfo): with self._callFUT(_site): self.assertTrue(siteinfo.site is _site) self.assertTrue(siteinfo.sm is _SM2) self.assertTrue(siteinfo.site is None) self.assertTrue(siteinfo.sm is gsm)