skip to navigation
skip to content 1.5.4

Manage link integrity in Plone.

Latest Version: 3.3.3


This package tries to integrate PLIP 125, link integrity checking, into Plone. It is making use of the zope3 event system in order to modify Plone itself as little as possible.


The code handles one of the two use cases of PLIP 125, deleting an item. Whenever an object that is referred to by another one via an <a> or <img> tag is going to be deleted, Plone’s regular flow of actions is “interrupted” and a confirmation form is presented to the user. If they then decide to indeed delete the object, the original request will be replayed and this time followed through, thereby breaching link integrity of the site.

This process is implemented independently of how the object is deleted (as long as OFS.ObjectManager’s _delObject is used ultimatively) and what request is used to do it. A more detailed — albeit slightly outdated — explanation of how this works can be found in NOTES.txt.

The second use case of PLIP 125, which provides better handling of moved items, is implemented by

Using in a WSGI application using repoze.zope2

If you are deploying Plone using repoze.zope2 in a WSGI pipeline, then the stock LinkIntegrity won’t work. To make it work, you need the following:

  • repoze.zope2 1.0.2 or later
  • ZODB 3.8.2 or later

These two will ensure that the “views on exceptions” functionality, which uses, is available.

Next, make sure that the repoze.retry#retry middleware is used, and that it will handle stock Retry exceptions. With repoze.retry 0.9.3 or later, that is the default. With earlier versions, you can configure it explicitly. For example:

paste.app_factory = repoze.obob.publisher:make_obob
repoze.obob.get_root = repoze.zope2.z2bob:get_root
repoze.obob.initializer = repoze.zope2.z2bob:initialize
repoze.obob.helper_factory = repoze.zope2.z2bob:Zope2ObobHelper
zope.conf = /Users/optilude/Development/Plone/Code/Build/uber/plone3.x-repoze/parts/instance-debug/etc/zope.conf

use = egg:repoze.retry#retry
retryable = ZODB.POSException:ConflictError ZPublisher.Publish:Retry

use = egg:repoze.errorlog#errorlog
path = /__error_log__
keep = 50
ignore =

pipeline =

use = egg:Paste#http
host =
port = 8080
threadpool_workers = 1
threadpool_spawn_if_under = 1


1.5.4 (2014-01-27)

  • Added support for sub path after uid of resolveuid [hoka]

1.5.3 (2013-08-13)

  • Set a maxsize when decompressing request data. [davisagli]
  • Fixed dexterity referenceablebehavior integration. [maurits]
  • Fix #13681, documents referencing each other will now also trigger a link integrity warning. [do3cc]

1.5.2 (2013-05-23)

  • Exceptions now return the repr() and not the str() of the object. This way we avoid, for File content types, loading the whole object data into memory. This closes [ericof]

1.5.1 (2013-03-05)

  • unicode links should not raise errors. Fixes [vangheem]
  • Dexterity: use zope.lifecycleevent instead of interfaces for Plone 4.3 support. [jone]
  • Avoid a bug during link integrity check when a source or target of the reference has been already removed during the deletion process. This can happen during large delete processes. [thomasdesvenain]
  • Monkey patch the Zope HTTPResponse status_code to include a mapping for linkintegritynotificationexception, to return a 200 code. [thepjot]

1.5.0 (2013-01-17)

  • Fix a remove confirmation view bug. Displays the portal type title rather than the portal type name. This change also broke some tests that were checking for the name rather than the title, but I just fixed those. [jianaijun]
  • Added support for Dexterity content types. Link integrity support for Dexterity requires the behavior to be enabled so that the Dexterity item can be used with Archetypes references. [jpgimenez]

1.4.7 (2012-10-03)

1.4.6 (2012-07-02)

  • No more dependencies. [hannosch]
  • Remove hard dependency on Archetypes. [davisagli]

1.4.5 - 2012-02-24

  • Fix an error in handling absolute links to objects within the portal, which prevented references from being created based on those links. This closes [davisagli]
  • Stabilize the sort order of breach sources returned for the confirmation view. [davisagli]
  • Use the get method to retrieve the field value if the instance does not provide an accessor method. This is the case for instance for fields which have been added via schema extension. [malthe]
  • Support resolveuid/UID references explicitely, by parsing and resolving these ourselves instead of relying on a view or script (which doesn’t work). This fixes linkintegrity for sites with link-by-uid turned on. This closes [mj]

1.4.4 - 2011-10-04

1.4.3 - 2011-09-14

  • Fix integrity reference generation for content not accessible by the editor. [witsch]
  • Fix handling of relative links instead of relying on Acquisition. [witsch]

1.4.2 - 2011-07-04

1.4.1 - 2011-05-12

  • Fix decoding of colon-delimited list of confirmed oids in the request when one of the oids contains a colon. [davisagli]
  • Add [WouterVH]

1.4.0 - 2011-01-03

  • Use plone.uuid to look up content UUIDs. [toutpt, davisagli]

1.3.3 - 2011-07-05

1.3.2 - 2011-05-12

  • Fix decoding of colon-delimited list of confirmed oids in the request when one of the oids contains a colon. [davisagli]

1.3.1 - 2010-08-08

  • Adjusted tests to no longer rely on sub-collections. [hannosch]
  • Use the official aq_get API to acquire the request from a context. [hannosch]

1.3.0 - 2010-07-18

  • Update license to GPL version 2 only. [hannosch]

1.3b2 - 2010-06-13

  • Avoid using the deprecated five:implements directive. [hannosch]

1.3b1 - 2010-06-03

1.3a5 - 2010-05-01

  • Properly handle retry exception instead of getting the special-casing of exception handling when publishing with debug=1 [davisagli]

1.3a4 - 2010-03-06

  • Do not abort if a text field is None. In that case the HTML parser raises a TypeError instead of an HTMLParseError. [wichert]

1.3a3 - 2010-02-18

1.3a2 - 2009-12-02

1.3a1 - 2009-11-17

  • Access the subtopics page directly since the tab is now hidden by default. [davisagli]
  • Partially disable the test regarding the undo log as the outcome differs between Plone 3 and 4, probably due to changes in the test setup. Refs [witsch]
  • Add test to verify undo log entries are not longer missing after removing items via the “delete” action. Refs [witsch]

1.2 - 2009-10-10

  • Also catch NotFound exceptions when trying to resolve linked objects. [optilude]

1.1 - 2009-08-31

  • Make compatible with repoze.zope2. See README.txt for notes on how to deploy. [optilude]
  • Don’t use id() to record confirmed items. It can change on request boundaries. Use an encoded _p_oid instead. [optilude]
  • Also regard traversal adapters when trying to resolve links into their corresponding objects. [witsch]
  • Fix some tests to make sure that text values are treated as text/html in Zope 2.12, whose zope.contenttype is stricter when guessing the mimetype. [davisagli]
  • Don’t install the exception hook in Zope 2.12 where it is no longer needed and breaks exception handling. [davisagli]

1.0.12 - 2009-06-03

  • Compare UIDs instead of objects during cleanup of breach information in order to avoid expensive hashing in “… in …” expressions. This makes removing linked objects much faster. [regebro]

1.0.11 - 2008-11-15

1.0.10 - 2008-07-07

  • Fixed the recognizing of links to files (or any object) with a space in the id. Fixes [maurits]
  • Updated tests to work with LinguaPlone by unmarking the creation flag on new objects. [maurits]

1.0.9 - 2008-05-08

  • Use acquisition API to support the “philikon-aq” branch. [witsch]
  • Fix a problem with updating link integrity references during a request which trying to delete multiple other objects. [witsch]

1.0.8 - 2008-04-21

1.0.7 - 2008-03-27

  • Fixed accidental removal of references not related to link integrity. [dunny]

1.0.6 - 2008-03-08

  • Added missing namespace declaration to avoid the warning about it. [wiggy]

1.0.5 - 2008-02-13

1.0.4 - 2008-01-03

  • Handle IObjectRemovedEvents with no attached request object. [witsch]
  • Updated tests to work with Plone 4.0. [hannosch]
  • Referencing items are now listed in alphabetical order [witsch]

1.0.3 - 2007-12-05

  • Fixed setting up the test layer after GenericSetup update [witsch]

1.0.2 - 2007-11-07

  • Fixed parser error when handling malformed HTML [witsch]
  • Fixed security issue due to using pickles (see CVE-2007-5741) [witsch]

1.0.1 - 2007-09-10

  • Added view for updating link integrity information for all site content [witsch]
  • Made code in more tolerant when encountering missing property sheets. [hannosch]

1.0 - 2007-08-16

  • Minor bug fixes and enhancements [witsch]

1.0rc1.1 - 2007-07-12

  • Bug and test fixes after upgrade to Zope 2.10.4 [witsch]

1.0rc1 - 2007-07-08

  • Bugfixes & additional tests [witsch]

1.0b3 - 2007-05-04

  • No changes.

1.0b2 - 2007-04-30

  • Integration of Plone’s “delete confirmation” page [witsch]

1.0b1 - 2007-03-03

  • Fix tests in regard to changed folder_contents and unicode issues [witsch]
  • Updates to the monkey patch needed for five exceptions [wiggy]

1.0a2 - 2007-02-07

  • Bugfixes & other minor enhancements [witsch]
  • Eggification and move into namespace [optilude]
  • Proof of concept & initial version [witsch]
  • Initial package structure. [zopeskel]
File Type Py Version Uploaded on Size (md5) Source 2014-01-27 96KB