[Checkins] SVN: plone.z3cform/trunk/ Add monkey patch to work around z3c.form bug in 1.9.0
Martin Aspeli
optilude at gmx.net
Sun Apr 5 08:40:35 EDT 2009
Log message for revision 98867:
Add monkey patch to work around z3c.form bug in 1.9.0
Changed:
U plone.z3cform/trunk/docs/HISTORY.txt
U plone.z3cform/trunk/plone/z3cform/__init__.py
A plone.z3cform/trunk/plone/z3cform/bbb/
A plone.z3cform/trunk/plone/z3cform/bbb/__init__.py
A plone.z3cform/trunk/plone/z3cform/bbb/term.py
-=-
Modified: plone.z3cform/trunk/docs/HISTORY.txt
===================================================================
--- plone.z3cform/trunk/docs/HISTORY.txt 2009-04-05 07:38:44 UTC (rev 98866)
+++ plone.z3cform/trunk/docs/HISTORY.txt 2009-04-05 12:40:34 UTC (rev 98867)
@@ -4,6 +4,9 @@
0.5.4 - unreleased
------------------
+* Added monkey patch to fix a bug in z3c.form's ChoiceTerms on z3c.form 1.9.0.
+ [optilude]
+
* Fix obvious bugs and dodgy naming in SingleCheckBoxWidget.
[optilude]
Modified: plone.z3cform/trunk/plone/z3cform/__init__.py
===================================================================
--- plone.z3cform/trunk/plone/z3cform/__init__.py 2009-04-05 07:38:44 UTC (rev 98866)
+++ plone.z3cform/trunk/plone/z3cform/__init__.py 2009-04-05 12:40:34 UTC (rev 98867)
@@ -1,2 +1,6 @@
import zope.i18nmessageid
MessageFactory = zope.i18nmessageid.MessageFactory('plone.z3cform')
+
+# backport bug fixes
+from bbb import term
+term.apply_patch()
\ No newline at end of file
Added: plone.z3cform/trunk/plone/z3cform/bbb/term.py
===================================================================
--- plone.z3cform/trunk/plone/z3cform/bbb/term.py (rev 0)
+++ plone.z3cform/trunk/plone/z3cform/bbb/term.py 2009-04-05 12:40:34 UTC (rev 98867)
@@ -0,0 +1,37 @@
+"""Monkey patch in a bug fix for Choice terms. No longer needed in z3c.form
+2.0.
+"""
+
+import logging
+import types
+from zope.schema.interfaces import IContextSourceBinder
+
+def patched_init(self, context, request, form, field, widget):
+ self.context = context
+ self.request = request
+ self.form = form
+ self.field = field
+ self.widget = widget
+ if field.vocabulary is None or IContextSourceBinder.providedBy(field.vocabulary):
+ field = field.bind(context)
+ self.terms = field.vocabulary
+
+def apply_patch():
+ try:
+ import pkg_resources
+ from z3c.form.term import ChoiceTerms
+ except ImportError:
+ return False
+
+ if not isinstance(ChoiceTerms, types.TypeType):
+ return False
+ try:
+ version = pkg_resources.get_distribution('z3c.form').version
+ except AttributeError:
+ return False
+
+ if version != '1.9.0':
+ return False
+
+ logging.getLogger('plone.z3cform').warn("Monkey patching z3c.form.term.ChoiceTerms to correctly bind fields")
+ ChoiceTerms.__init__ = patched_init
More information about the Checkins
mailing list