> From: Chris McDonough <chr...@plope.com>
> To: Sam Brauer <sampbra...@yahoo.com>
> Cc: repoze-dev@lists.repoze.org
> Sent: Tue, May 4, 2010 9:02:35 PM
> Subject: Re: [Repoze-dev] Folder event subscriber not called
> Hi Sam,
> Modify your run.py so that its app function calls "hook_zca" ala:
> def app(global_config, **settings):
>     """ This function returns a WSGI application.
>     It is usually called by the PasteDeploy framework during 
>     ``paster serve``.
>     """
>     zodb_uri = settings.get('zodb_uri')
>     zcml_file = settings.get('configure_zcml', 'configure.zcml')
>     if zodb_uri is None:
>         raise ValueError("No 'zodb_uri' in application configuration.")
>     finder = PersistentApplicationFinder(zodb_uri, appmaker)
>     def get_root(request):
>         return finder(request.environ)
>     config = Configurator(root_factory=get_root, settings=settings)
>     config.begin()
>     config.hook_zca()
>     config.load_zcml(zcml_file)
>     config.end()
>     return config.make_wsgi_app()
> The repoze.folder code isn't dependent on BFG; it's actually general
> enough to be used in any ZODB application.  Therefore it uses the
> "global" ZCA API to send events.  When you call config.hook_zca(), this
> tells BFG to replace the "normal" lookup for a Zope global registry with
> a lookup which returns the ZCA registry that BFG uses.
> After I added this call, I tested your code, and saw your event sent to
> my console.
> See http://docs.repoze.org/bfg/1.2/narr/zca.html for more info.

That call to hook_zca() was indeed the missing piece.  Thank you!
I think it would have taken me a very long time to have figured that out on my 
own, and I can imagine that this might stump other new users as well.

May I suggest a couple of places in the documentation (which is extraordinary, 
btw) where this might be mentioned?
It could be noted in the "Using Events" chapter of the docs 
Also if you were to expand the example in the tutorial on using repoze.catalog 
(http://docs.repoze.org/bfg/1.2/tutorials/catalog/index.html) such that it 
included hooking up subscribers to index/unindex in response to folder 
add/remove events, that would be another good place to mention it.

Once again, thank you for your time and effort.
- Sam

Repoze-dev mailing list

Reply via email to