On Wed, 2010-05-05 at 07:30 -0700, Sam Brauer wrote:
> > 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.
> 
> Chris,
> 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.

Yes.

> 
> 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 
> (http://docs.repoze.org/bfg/1.2/narr/events.html).
> 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.

I'd rather make a r.b.folder implementation that used the BFG API when
sending events and demonstrate using that in a tutorial.  Explaining
what "hook_zca" does in general is hard; in context it's mostly
impossible.

- C


_______________________________________________
Repoze-dev mailing list
Repoze-dev@lists.repoze.org
http://lists.repoze.org/listinfo/repoze-dev

Reply via email to