[Zope-dev] Re: post publishing hook
Florent Guillaume
fg at nuxeo.com
Fri Apr 1 22:27:24 EST 2005
Christian Heimes <heimes at faho.rwth-aachen.de> wrote:
> Florent Guillaume wrote:
> > I really could use a post publishing hook.
> > Standard use case: delay indexing at the end of the request to only do
> > it once per object even if the object has been modified 4 times.
>
> Using a post publishing hook for this use case isn't a good idea - IMO.
> The Publisher has nothing to with indexing. It's a completly different
> part of the architecture.
>
> You want to bind some actions to the transaction system because you want
> to execute some code at the end of the first phase of the 2 phase
> commit. That's a completly different story than the post publishing
> hook. Hooking into the transaction machinery of ZODB is very easy. Write
> your own DateManager implementing the IDateManager interface and
> register it into the current transaction using get_transaction.register(DM).
[note: s/IDateManager/IDataManager/ above]
>
> For your use case overwrite the tpc_vote() method of the data manager to
> do the indexing at the boundary between the two phases.
>
> Jens Vagenpohl's mail host and Chris McD's blob have example code for you.
Ok, Tres also recommended something like that.
I was a bit concerned that there would be problems in case of conflicts,
or if there was a need to tweak the body returned to the user, but after
reading transaction's code and MailDropHost and re-re-reading
Publisher.py, I'm confident I can do everything I need.
Thanks a lot, this together with events will make things much easier in
our framework.
Florent
--
Florent Guillaume, Nuxeo (Paris, France) CTO, Director of R&D
+33 1 40 33 71 59 http://nuxeo.com fg at nuxeo.com
More information about the Zope-Dev
mailing list