[Grok-dev] grokcore.component registring Components

Christian Klinger cklinger at novareto.de
Tue Nov 29 12:40:02 UTC 2011


Hi,

together with Souheil we tried to use z3c.baseregistry[1] together with 
GROK. Out of the box it does not work, because grokcore.component uses
some functions (provideUtility, provideAdatper, ...) from 
zope.component. Souheil discoverd that this function use *always* the 
globalSiteManager, which makes problems together with z3c.baseregistry.

We created a simple function (my_provideUtility) which works, Is it 
possible to integrate this in grokcore.component? Are there any risks?

Thanks for your Help
Christian

[1] http://pypi.python.org/pypi/z3c.baseregistry

----------------%<------------------------------------------------------

def my_provideUtility(component, provides=None, name=u''):
     site = zope.component.hooks.getSite()
     if site is None:
         sm = zope.component.getSiteManager()
     else:
         sm = site.getSiteManager()
     sm.registerUtility(component, provides, name, event=False)


class GlobalUtilityGrokker(martian.ClassGrokker):
     ...

     def execute(self, factory, config, direct, provides, name, **kw):
         if not direct:
             factory = factory()
         config.action(
             discriminator=('utility', provides, name),
             callable=my_provideUtility,
             args=(factory, provides, name),
             )
         return True

----------------------->%---------------------------------------------------



More information about the Grok-dev mailing list