plone.app.linkintegrity 1.4.6

Manage link integrity in Plone
plone.app.linkintegrity is a Plone product that 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.

Status

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 or 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 plone.app.redirector.

Using plone.app.linkintegrity 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 plone.app.linkintegrity 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:

[app:zope2]
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

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

[filter:errorlog]
use = egg:repoze.errorlog#errorlog
path = /__error_log__
keep = 50
ignore =
 paste.httpexceptions:HTTPUnauthorized
 paste.httpexceptions:HTTPNotFound
 paste.httpexceptions:HTTPFound

[pipeline:main]
pipeline =
 retry
 egg:repoze.tm#tm
 egg:repoze.vhm#vhm_xheaders
 errorlog
 zope2

[server:main]
use = egg:Paste#http
host = 127.0.0.1
port = 8080
threadpool_workers = 1
threadpool_spawn_if_under = 1

last updated on:
July 7th, 2012, 19:16 GMT
price:
FREE!
developed by:
Plone Foundation
homepage:
pypi.python.org
license type:
GPL (GNU General Public License) 
category:
ROOT \ Internet \ Plone Extensions

FREE!

In a hurry? Add it to your Download Basket!

user rating

UNRATED
0.0/5
 

0/5

Rate it!
What's New in This Release:
  • No more zope.app dependencies. [hannosch]
  • Remove hard dependency on Archetypes. [davisagli]
read full changelog

Add your review!

SUBMIT