Welcome, guest | Sign In | My Account | Store | Cart

Notice! PyPM is being replaced with the ActiveState Platform, which enhances PyPM’s build and deploy capabilities. Create your free Platform account to download ActivePython or customize Python with the packages you require and get automatic updates.

pypm install dm.zopepatches.formlib

How to install dm.zopepatches.formlib

  1. Download and install ActivePython
  2. Open Command Prompt
  3. Type pypm install dm.zopepatches.formlib
 Python 2.7Python 3.2Python 3.3
Windows (32-bit)
1.0.1 Available View build log
Windows (64-bit)
1.0.1 Available View build log
Mac OS X (10.5+)
1.0.1 Available View build log
Linux (32-bit)
1.0.1 Available View build log
Linux (64-bit)
1.0.1 Available View build log
Lastest release
version 1.0.1 on Jan 5th, 2011

This package allows to work around problems/weaknesses in zope.formlib and the associated widgets in zope.app.form.browser, described by "https://bugs.launchpad.net/zope3/+bug/528920" and "https://bugs.launchpad.net/zope3/+bug/528912".

The package has been developed for Zope 2.10, will probably work for Zope 2.11 and is unlikely to work for very new Zope versions, because the widget code has been moved from zope.app.form to zope.formlib. I may publish versions of this package for new Zope versions in the future.

The package consists of various modules described below.

To use the package in your application, you import some of its patch functions (mentioned below) and call them during the startup of your application.

I hope that corresponding patches will sooner or later appear in the standard Zope code and make this package obsolete.


Together with widget, this module is destined to work around http://dev.plone.org/plone/ticket/10264 and https://bugs.launchpad.net/zope3/+bug/528920.

zope.formlib distinguishes between widget related errors and other (more global) errors. If a widget itself detects a widget related error (usually because a restriction for the associated field fails), it sets its error condition. This error condition is usually used to highlight the widget containing an error and to provide information about this error. However, if the widget related error is not detected by the widget itself, the error is not associated with the widget and important information may be missing.

The function patch_action() in module form enhances zope.formlib.form.Action by an additional method associate_errors_with_widgets and redefines its failure method to call it unless an explicit failure handler is specified. This provides for automatic error association with the widgets in the standard case.

associate_errors_with_widgets tries to associate zope.app.form.interfaces.WidgetInputError with the corresponding widget. For this purpose, the widget must have a setWidgetInputError method. By default widgets lack this method. However widget.patch_widget() can be used to define it. Therefore, form.patch_action() and widget.patch_widget() are usually used together.


Together with form, this module is destined to work around http://dev.plone.org/plone/ticket/10264 and https://bugs.launchpad.net/zope3/+bug/528920.

Its patch_widget() enhances zope.app.form.browser.widget.BrowserWidget (the base class for zope.app.form widgets) by defining the method setWidgetInputError. The method allows external code to set an error condition on the widget.

setWidgetInputError is used by the error handling implemented by the form module. Therefore, widget.patch_widget() is usually used together with form.patch_action().


This module is destined to work around http://dev.plone.org/plone/ticket/10267 and https://bugs.launchpad.net/zope3/+bug/528912.

Its patch_OrderedMultiSelectWidget() fixes zope.app.form.browser.itemswidgets.OrderedMultiSelectWidget.

Subscribe to package updates

Last updated Jan 5th, 2011

Download Stats

Last month:1

What does the lock icon mean?

Builds marked with a lock icon are only available via PyPM to users with a current ActivePython Business Edition subscription.

Need custom builds or support?

ActivePython Enterprise Edition guarantees priority access to technical support, indemnification, expert consulting and quality-assured language builds.

Plan on re-distributing ActivePython?

Get re-distribution rights and eliminate legal risks with ActivePython OEM Edition.