[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