[Framework-Team] LinkIntegrity merge

Martin Aspeli optilude at gmx.net
Tue Dec 12 01:11:25 UTC 2006

Hi guys,

I think LinkIntegrity is nearly ready for merging. Before doing so, I 
have a few caveats, and I'd like to have someone else take a look over 
the code.

Good points:

  1) It works
  2) It requires very little integration; a marker placed on the request 
in folder_delete.cpy (to avoid an annoying re-run confirmation), and a 
triggering of a monkey patch (see below)
  3) It's very ubiquitous - it will work almost anywhere that objects 
are deleted in the Plone UI
  4) It's very well documented and commented
  5) It's very well tested (see doctests in docts/)

Worrying points:

  1) It's very pervasive :) For example, you'll get delete confirmation 
(in Plone) if you try to delete an object in the ZMI. I'm not entirely 
sure, but I think you may even if the delete is happening from a script. 
Whether this is good or bad will probably depend on the use case. I 
believe it's possible to bypass confirmation by putting the appropriate 
marker in the request (all managed via a well-defined adapter), but it's 
more of an opt-out than an opt-in

  2) It does monkey patch the publisher (in a pretty sane way). Note 
that this patch would go away if FiveException was merged into Zope 2, 
which is not completely unlikely, especially if we push for it.

  3) It monkey patches parts of the test framework to work around bugs 
there, but these could be fixed.

My recommendation:

  (*) We merge, provided:

   a) We merge the one template override (folder_delete.cpy) into 
CMFPlone, which should be harmless
   b) We make an on/off switch to turn off the behaviour globally (Andi 
is working on this)
   c) We make it into plone.app.linkintegrity rather than 
Products/LinkIntegrity (trivial)

The code is here: http://svn.plone.org/svn/collective/LinkIntegrity/trunk/

Just install in a Plone 3 instance using quickinstaller, and you can 
test it. Add some documents, make some links in HTML between various 
documents, and try do delete a document that's referenced from another.

Tests and use cases also here: 

Note that there is a kind of "Plan B" - we keep the link parsing and 
reference building, but lose the pervasive checks that handle all kinds 
of deletes; instead, we build warnings into Plone's existing 
delete_confirm pages. This is obviously less strong and requires a more 
direct dependency in CMFPlone.

Given the amount of work (and tests!) that have gone into LinkIntegrity 
to date, and the fact that it does seem to work so well in the UI, I'd 
say we should keep the deeper integration as it is now, but I want to 
make sure people are aware of the options and implications.

What do you think? We can have this ready for merge by the end of the 
year if we get the +1.


More information about the Framework-Team mailing list