[Checkins] SVN: zope.app.form/trunk/ Adapt to removal of deprecated interfaces from zope.component.interfaces.

Dan Korostelev nadako at gmail.com
Sun Mar 8 04:24:24 EDT 2009


Log message for revision 97648:
  Adapt to removal of deprecated interfaces from zope.component.interfaces.
  
  Fix tests to work on Python 2.6.
  

Changed:
  U   zope.app.form/trunk/CHANGES.txt
  U   zope.app.form/trunk/setup.py
  U   zope.app.form/trunk/src/zope/app/form/__init__.py
  U   zope.app.form/trunk/src/zope/app/form/browser/form.txt
  U   zope.app.form/trunk/src/zope/app/form/browser/interfaces.py
  U   zope.app.form/trunk/src/zope/app/form/browser/metaconfigure.py
  U   zope.app.form/trunk/src/zope/app/form/interfaces.py
  U   zope.app.form/trunk/src/zope/app/form/tests/test_utility.py
  U   zope.app.form/trunk/src/zope/app/form/tests/test_widget.py
  U   zope.app.form/trunk/src/zope/app/form/utility.py

-=-
Modified: zope.app.form/trunk/CHANGES.txt
===================================================================
--- zope.app.form/trunk/CHANGES.txt	2009-03-08 07:55:21 UTC (rev 97647)
+++ zope.app.form/trunk/CHANGES.txt	2009-03-08 08:24:24 UTC (rev 97648)
@@ -11,6 +11,12 @@
 - Fixed bug in SequenceWidget where it crashed while trying to iterate
   a missing_value (None in most of cases) on _getRenderedValue.
 
+- Adapt to removal of deprecated interfaces from zope.component.interfaces.
+  The IView was moved to zope.publisher and we use our custom IWidgetFactory
+  interface instead of removed zope.component.interfaces.IViewFactory.
+
+- Fix tests to work on Python 2.6.
+
 3.7.1 (2009-01-31)
 ==================
 

Modified: zope.app.form/trunk/setup.py
===================================================================
--- zope.app.form/trunk/setup.py	2009-03-08 07:55:21 UTC (rev 97647)
+++ zope.app.form/trunk/setup.py	2009-03-08 08:24:24 UTC (rev 97648)
@@ -72,7 +72,6 @@
           "zope.cachedescriptors",
           "zope.component",
           "zope.configuration",
-          "zope.deprecation",
           "zope.exceptions",
           "zope.i18n",
           "zope.interface",

Modified: zope.app.form/trunk/src/zope/app/form/__init__.py
===================================================================
--- zope.app.form/trunk/src/zope/app/form/__init__.py	2009-03-08 07:55:21 UTC (rev 97647)
+++ zope.app.form/trunk/src/zope/app/form/__init__.py	2009-03-08 08:24:24 UTC (rev 97648)
@@ -17,10 +17,8 @@
 """
 __docformat__ = 'restructuredtext'
 
-from zope.app.form.interfaces import IWidget, InputErrors
+from zope.app.form.interfaces import IWidget, InputErrors, IWidgetFactory
 from zope.cachedescriptors.property import readproperty
-from zope.component.interfaces import IViewFactory
-from zope.deprecation import deprecated
 from zope.interface import implements
 from zope.i18n import translate
 from zope.schema.interfaces import IChoice, ICollection
@@ -100,7 +98,7 @@
 
 class CustomWidgetFactory(object):
     """Custom Widget Factory."""
-    implements(IViewFactory)
+    implements(IWidgetFactory)
 
     def __init__(self, widget_factory, *args, **kw):
         self._widget_factory = widget_factory

Modified: zope.app.form/trunk/src/zope/app/form/browser/form.txt
===================================================================
--- zope.app.form/trunk/src/zope/app/form/browser/form.txt	2009-03-08 07:55:21 UTC (rev 97647)
+++ zope.app.form/trunk/src/zope/app/form/browser/form.txt	2009-03-08 08:24:24 UTC (rev 97648)
@@ -49,8 +49,7 @@
 We now imitate the form-directive's behavior and create the view class:
 
   >>> from zope.app.form.browser.formview import FormView
-  >>> View = type('View', bases=(DataHandler, FormView), 
-  ...             dict={'schema': IName})
+  >>> View = type('View', (DataHandler, FormView), {'schema': IName})
 
 To initialize the view, you still need a context and a request. The context is
 useful because it gives you a location, so that you can look up local

Modified: zope.app.form/trunk/src/zope/app/form/browser/interfaces.py
===================================================================
--- zope.app.form/trunk/src/zope/app/form/browser/interfaces.py	2009-03-08 07:55:21 UTC (rev 97647)
+++ zope.app.form/trunk/src/zope/app/form/browser/interfaces.py	2009-03-08 08:24:24 UTC (rev 97648)
@@ -17,15 +17,14 @@
 """
 __docformat__ = 'restructuredtext'
 
-import zope.deferredimport
 from zope.interface import Interface
 from zope.schema import TextLine, Bool
 from zope.app.form.interfaces import IWidget, IInputWidget
 
-zope.deferredimport.deprecated(
-    "It has moved to zope.browser.interfaces This reference will be gone sometimes.",
-    ITerms = 'zope.browser.interfaces:ITerms',
-    )
+# BBB: ITerms are also used by z3c.form and possibly other form
+# frameworks, so it was moved to zope.browser.interfaces and it's
+# preferred to import from there now.
+from zope.browser.interfaces import ITerms
 
 
 class IBrowserWidget(IWidget):

Modified: zope.app.form/trunk/src/zope/app/form/browser/metaconfigure.py
===================================================================
--- zope.app.form/trunk/src/zope/app/form/browser/metaconfigure.py	2009-03-08 07:55:21 UTC (rev 97647)
+++ zope.app.form/trunk/src/zope/app/form/browser/metaconfigure.py	2009-03-08 08:24:24 UTC (rev 97648)
@@ -22,7 +22,6 @@
 import zope.component
 from zope.security.checker import CheckerPublic
 from zope.interface import implementedBy
-from zope.component.interfaces import IViewFactory
 from zope.configuration.exceptions import ConfigurationError
 
 from zope.schema import getFieldNamesInOrder
@@ -34,6 +33,7 @@
 from zope.app.form import CustomWidgetFactory
 from zope.app.form.browser.i18n import _
 from zope.app.form.interfaces import IInputWidget, IDisplayWidget
+from zope.app.form.interfaces import IWidgetFactory
 from add import AddView, AddViewFactory
 from editview import EditView, EditViewFactory
 from formview import FormView
@@ -87,7 +87,7 @@
             class_ = self._default_widget_factory
         
         # don't wrap a factory into a factory
-        if IViewFactory.providedBy(class_):
+        if IWidgetFactory.providedBy(class_):
             factory = class_
         else:
             factory = CustomWidgetFactory(class_, **attrs)

Modified: zope.app.form/trunk/src/zope/app/form/interfaces.py
===================================================================
--- zope.app.form/trunk/src/zope/app/form/interfaces.py	2009-03-08 07:55:21 UTC (rev 97647)
+++ zope.app.form/trunk/src/zope/app/form/interfaces.py	2009-03-08 08:24:24 UTC (rev 97648)
@@ -18,7 +18,7 @@
 __docformat__ = 'restructuredtext'
 
 from zope.schema.interfaces import ValidationError
-from zope.component.interfaces import IView
+from zope.publisher.interfaces import IView
 from zope.interface import Attribute, Interface, implements
 from zope.schema import Bool
 from zope.exceptions.interfaces import UserError
@@ -237,3 +237,9 @@
 
         Display widgets should never be required.
         """)
+
+class IWidgetFactory(Interface):
+    """A factory that creates the widget"""
+    
+    def __call__(context, request):
+        """Return a widget"""

Modified: zope.app.form/trunk/src/zope/app/form/tests/test_utility.py
===================================================================
--- zope.app.form/trunk/src/zope/app/form/tests/test_utility.py	2009-03-08 07:55:21 UTC (rev 97647)
+++ zope.app.form/trunk/src/zope/app/form/tests/test_utility.py	2009-03-08 08:24:24 UTC (rev 97648)
@@ -19,7 +19,7 @@
 from zope.testing import doctest
 import zope.security.checker
 from zope.interface import Interface, implements
-from zope.component.interfaces import IViewFactory, ComponentLookupError
+from zope.component.interfaces import ComponentLookupError
 from zope.publisher.browser import TestRequest, BrowserView
 from zope.security.interfaces import ForbiddenAttribute, Unauthorized
 from zope.schema import Field, Int, accessors
@@ -29,6 +29,7 @@
 from zope.app.form import Widget
 from zope.app.form.interfaces import IWidget, IInputWidget, IDisplayWidget
 from zope.app.form.interfaces import ConversionError, InputErrors, WidgetsError
+from zope.app.form.interfaces import IWidgetFactory
 from zope.app.form.utility import no_value, setUpWidget, setUpWidgets
 from zope.app.form.utility import setUpEditWidgets, setUpDisplayWidgets
 from zope.app.form.utility import getWidgetsData, viewHasInput
@@ -150,15 +151,15 @@
         If the view already has an attribute with that name, it attempts to
         use the existing value to create a widget. Two types are supported:
            
-            - IViewFactory
+            - IWidgetFactory
             - IWidget
            
-        If the existing attribute value implements IViewFactory, it is used
+        If the existing attribute value implements IWidgetFactory, it is used
         to create a widget:
            
             >>> widget = FooWidget(IContent['foo'], request)
             >>> class Factory(object):
-            ...     implements(IViewFactory)
+            ...     implements(IWidgetFactory)
             ...     def __call__(self, request, context):
             ...         return widget
             >>> setattr(view, 'foo_widget', Factory())
@@ -197,7 +198,7 @@
         TypeError. 
         
         E.g., if a view already has a widget attribute of the name 
-        <field_name> + '_widget' that does not implement IViewFactory or
+        <field_name> + '_widget' that does not implement IWidgetFactory or
         IWidget, setUpWidget raises a TypeError: 
         
             >>> view = BrowserView(Content(), request)
@@ -207,10 +208,10 @@
             True
             
         Similarly, if a view has a widget attribute that implements 
-        IViewFactory, the object created by the factory must implement IWidget.
+        IWidgetFactory, the object created by the factory must implement IWidget.
         
             >>> class Factory(object):
-            ...     implements(IViewFactory)
+            ...     implements(IWidgetFactory)
             ...     def __call__(self, request, context):
             ...         return 'not a widget'
             >>> setattr(view, 'foo_widget', Factory())

Modified: zope.app.form/trunk/src/zope/app/form/tests/test_widget.py
===================================================================
--- zope.app.form/trunk/src/zope/app/form/tests/test_widget.py	2009-03-08 07:55:21 UTC (rev 97647)
+++ zope.app.form/trunk/src/zope/app/form/tests/test_widget.py	2009-03-08 08:24:24 UTC (rev 97648)
@@ -19,7 +19,6 @@
 from zope.testing.doctestunit import DocTestSuite
 
 from zope.interface.verify import verifyClass, verifyObject
-from zope.component.interfaces import IViewFactory
 from zope.publisher.browser import TestRequest
 from zope.schema import Text
 

Modified: zope.app.form/trunk/src/zope/app/form/utility.py
===================================================================
--- zope.app.form/trunk/src/zope/app/form/utility.py	2009-03-08 07:55:21 UTC (rev 97647)
+++ zope.app.form/trunk/src/zope/app/form/utility.py	2009-03-08 08:24:24 UTC (rev 97648)
@@ -45,7 +45,7 @@
 from zope.app.form.interfaces import WidgetsError, MissingInputError
 from zope.app.form.interfaces import InputErrors
 from zope.app.form.interfaces import IInputWidget, IDisplayWidget
-from zope.component.interfaces import IViewFactory
+from zope.app.form.interfaces import IWidgetFactory
 
 # A marker that indicates 'no value' for any of the utility functions that
 # accept a 'value' argument.
@@ -96,7 +96,7 @@
         # does not exist - create it
         widget = _createWidget(context, field, viewType, view.request)
         setattr(view, widgetName, widget)
-    elif IViewFactory.providedBy(widget):
+    elif IWidgetFactory.providedBy(widget):
         # exists, but is actually a factory - use it to create the widget
         widget = widget(field.bind(context), view.request)
         setattr(view, widgetName, widget)



More information about the Checkins mailing list