Skip to main content

Work around problems/weaknesses in 'zope.formlib' and the widgets in 'zope.app.form'.

Project description

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.

form

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.

widget

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().

multiselection

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.

Version history

2.0

Python 3 compatibility

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dm.zopepatches.formlib-2.0.tar.gz (4.7 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page