[Checkins] SVN: zope.schema/trunk/ - Make IBool interface of Bool more important than IFromUnicode so adapters

Christian Zagrodnick cz at gocept.com
Mon Mar 23 08:51:31 EDT 2009


Log message for revision 98319:
  - Make IBool interface of Bool more important than IFromUnicode so adapters
  registered for IBool take precendence over adapters registered for
  IFromUnicode.
  
  

Changed:
  U   zope.schema/trunk/CHANGES.txt
  U   zope.schema/trunk/src/zope/schema/_bootstrapfields.py
  U   zope.schema/trunk/src/zope/schema/_field.py
  U   zope.schema/trunk/src/zope/schema/tests/test_boolfield.py

-=-
Modified: zope.schema/trunk/CHANGES.txt
===================================================================
--- zope.schema/trunk/CHANGES.txt	2009-03-23 12:51:15 UTC (rev 98318)
+++ zope.schema/trunk/CHANGES.txt	2009-03-23 12:51:31 UTC (rev 98319)
@@ -15,6 +15,11 @@
   "vocabulary" attribute description to be more sensible, making it
   ``zope.schema.Field`` instead of plain ``zope.interface.Attribute``.
 
+- Make IBool interface of Bool more important than IFromUnicode so adapters
+  registered for IBool take precendence over adapters registered for
+  IFromUnicode.
+
+
 3.5.3 (2009-03-10)
 ------------------
 

Modified: zope.schema/trunk/src/zope/schema/_bootstrapfields.py
===================================================================
--- zope.schema/trunk/src/zope/schema/_bootstrapfields.py	2009-03-23 12:51:15 UTC (rev 98318)
+++ zope.schema/trunk/src/zope/schema/_bootstrapfields.py	2009-03-23 12:51:31 UTC (rev 98319)
@@ -334,8 +334,6 @@
 class Bool(Field):
     """A field representing a Bool."""
 
-    implements(IFromUnicode)
-
     _type = type(True)
 
     if _type is not type(1):

Modified: zope.schema/trunk/src/zope/schema/_field.py
===================================================================
--- zope.schema/trunk/src/zope/schema/_field.py	2009-03-23 12:51:15 UTC (rev 98318)
+++ zope.schema/trunk/src/zope/schema/_field.py	2009-03-23 12:51:31 UTC (rev 98319)
@@ -72,6 +72,7 @@
 classImplements(TextLine, ITextLine)
 classImplements(Password, IPassword)
 classImplements(Bool, IBool)
+classImplements(Bool, IFromUnicode)
 classImplements(Int, IInt)
 
 class SourceText(Text):

Modified: zope.schema/trunk/src/zope/schema/tests/test_boolfield.py
===================================================================
--- zope.schema/trunk/src/zope/schema/tests/test_boolfield.py	2009-03-23 12:51:15 UTC (rev 98318)
+++ zope.schema/trunk/src/zope/schema/tests/test_boolfield.py	2009-03-23 12:51:31 UTC (rev 98319)
@@ -17,9 +17,12 @@
 """
 from unittest import main, makeSuite
 from zope.schema import Bool
-from zope.schema.interfaces import RequiredMissing
+from zope.schema.interfaces import RequiredMissing, IBool, IFromUnicode
 from zope.schema.tests.test_field import FieldTestBase
+import zope.interface.adapter
+import zope.interface
 
+
 class BoolTest(FieldTestBase):
     """Test the Bool Field."""
 
@@ -40,7 +43,27 @@
 
         self.assertRaises(RequiredMissing, field.validate, None)
 
+    def testIBoolIsMoreImportantThanIFromUnicode(self):
+        registry = zope.interface.adapter.AdapterRegistry()
 
+        def adapt_bool(context):
+            return 'bool'
+
+        def adapt_from_unicode(context):
+            return 'unicode'
+
+        class IAdaptTo(zope.interface.Interface):
+            pass
+
+        registry.register((IBool,), IAdaptTo, u'', adapt_bool)
+        registry.register((IFromUnicode,), IAdaptTo, u'', adapt_from_unicode)
+
+        field = Bool(title=u'Bool field', description=u'',
+                     readonly=False, required=True)
+
+        self.assertEqual('bool', registry.queryAdapter(field, IAdaptTo))
+
+
 def test_suite():
     return makeSuite(BoolTest)
 



More information about the Checkins mailing list