解决“zope.formlib”和“zope.app.form”中的小部件中的问题/弱点。
dm.zopepatches.formlib的Python项目详细描述
这个程序包允许 zope.formlib中的问题/弱点以及 zope.app.form.browser, 由“https://bugs.launchpad.net/zope3/+bug/528920”描述 以及“https://bugs.launchpad.net/zope3/+bug/528912”。
这个包是为zope 2.10开发的,可能会为zope2.11工作。 而且不太可能适用于非常新的zope版本,因为小部件 代码已从zope.app.form移动到zope.formlib。 我可能会在将来为新的zope版本发布这个包的版本。
这个包由下面描述的各种模块组成。
要在应用程序中使用该包,请导入 补丁函数(如下所述)并在启动时调用它们 你的申请。
我希望相应的补丁迟早会出现在 标准的zope代码并使这个包过时。
表格
与widget一起,这个模块注定要工作 在http://dev.plone.org/plone/ticket/10264和https://bugs.launchpad.net/zope3/+bug/528920附近。
zope.formlib区分与小部件相关的错误 以及其他(更全局性的)错误。如果小部件本身检测到 小部件相关错误(通常是因为 关联字段失败),它设置其错误条件。 此错误条件通常用于突出显示包含 错误并提供有关此错误的信息。 但是,如果 小部件本身,错误与小部件无关,并且 重要信息可能丢失。
模块form中的函数patch_action()增强了 zope.formlib.form.Action通过附加方法 associate_errors_with_widgets并重新定义其 failure方法调用它,除非指定了显式故障处理程序。 这提供了与小部件的自动错误关联 在标准情况下。
associate_errors_with_widgets尝试关联 zope.app.form.interfaces.WidgetInputError带 相应的小部件。为此,小部件 必须有一个setWidgetInputError方法。 默认情况下,小部件缺少此方法。但是widget.patch_widget() 可以用来定义它。因此,form.patch_action() 和widget.patch_widget()通常一起使用。
小部件
与form一起,这个模块注定要工作 在http://dev.plone.org/plone/ticket/10264和https://bugs.launchpad.net/zope3/+bug/528920附近。
它的patch_widget()增强了 zope.app.form.browser.widget.BrowserWidget(的基类 zope.app.formwidgets)通过定义方法setWidgetInputError。 该方法允许外部代码在小部件上设置错误条件。
setWidgetInputError被实现的错误处理使用 通过form模块。因此,widget.patch_widget()通常是 与form.patch_action()一起使用。
多选
这个模块注定要解决 http://dev.plone.org/plone/ticket/10267和https://bugs.launchpad.net/zope3/+bug/528912。
它的patch_OrderedMultiSelectWidget() 修复了zope.app.form.browser.itemswidgets.OrderedMultiSelectWidget。