[Zope-Checkins] SVN: Zope/branches/2.12/ Backport removal of dependency on zope.app.schema from trunk.
Tres Seaver
tseaver at palladion.com
Tue Sep 22 14:59:58 EDT 2009
Log message for revision 104433:
Backport removal of dependency on zope.app.schema from trunk.
Changed:
U Zope/branches/2.12/ZOPE_APP_DEPENDENCIES.rst
U Zope/branches/2.12/doc/CHANGES.rst
U Zope/branches/2.12/src/Products/Five/__init__.py
A Zope/branches/2.12/src/Products/Five/schema.py
A Zope/branches/2.12/src/Products/Five/tests/test_schema.py
-=-
Modified: Zope/branches/2.12/ZOPE_APP_DEPENDENCIES.rst
===================================================================
--- Zope/branches/2.12/ZOPE_APP_DEPENDENCIES.rst 2009-09-22 18:52:25 UTC (rev 104432)
+++ Zope/branches/2.12/ZOPE_APP_DEPENDENCIES.rst 2009-09-22 18:59:58 UTC (rev 104433)
@@ -36,10 +36,10 @@
o Products.Five.form.metaconfigure (for ``menuItemDirective``)
o Products.Five.fivedirectives (for ``IBasicResourceInformation``)
-- [_] zope.app.schema
- o Products.Five
+- [X] zope.app.schema
+ * Products.Five (imports ``zope.app.schema.vocabulary`` for
+ side-effects ?!).
-
Zope2 has transitive dependencies on these packages:
- [_] zope.app.applicationcontrol
Modified: Zope/branches/2.12/doc/CHANGES.rst
===================================================================
--- Zope/branches/2.12/doc/CHANGES.rst 2009-09-22 18:52:25 UTC (rev 104432)
+++ Zope/branches/2.12/doc/CHANGES.rst 2009-09-22 18:59:58 UTC (rev 104433)
@@ -15,6 +15,9 @@
- ZODB3 = 3.9.0
+- Backported clone of ``ZopeVocabularyRegistry`` from ``zope.app.schema``, and
+ sane registration of it during initialization of Five product.
+
Bugs Fixed
++++++++++
Modified: Zope/branches/2.12/src/Products/Five/__init__.py
===================================================================
--- Zope/branches/2.12/src/Products/Five/__init__.py 2009-09-22 18:52:25 UTC (rev 104432)
+++ Zope/branches/2.12/src/Products/Five/__init__.py 2009-09-22 18:59:58 UTC (rev 104433)
@@ -22,13 +22,14 @@
from Products.Five.browser import BrowserView
from Products.Five.skin.standardmacros import StandardMacros
-# hook up ZopeVocabularyRegistry
-import zope.app.schema.vocabulary
-
# load the site's ZCML tree (usually site.zcml) upon product
# initialization
def initialize(context):
+ from zope.schema.vocabulary import setVocabularyRegistry
+ from Products.Five.schema import Zope2VocabularyRegistry
+
zcml.load_site()
+ setVocabularyRegistry(Zope2VocabularyRegistry())
# some convenience methods/decorators
Copied: Zope/branches/2.12/src/Products/Five/schema.py (from rev 104366, Zope/trunk/src/Products/Five/schema.py)
===================================================================
--- Zope/branches/2.12/src/Products/Five/schema.py (rev 0)
+++ Zope/branches/2.12/src/Products/Five/schema.py 2009-09-22 18:59:58 UTC (rev 104433)
@@ -0,0 +1,36 @@
+##############################################################################
+#
+# Copyright (c) 2004, 2005 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Five-specific schema support
+
+$Id$
+"""
+from zope.component import getUtility
+from zope.interface import implements
+from zope.schema.interfaces import IVocabularyRegistry
+from zope.schema.interfaces import IVocabularyFactory
+
+class Zope2VocabularyRegistry(object):
+ """IVocabularyRegistry that supports global and local utilities.
+
+ Cloned from the version in zope.app.schema.vocabulary: it was the
+ only feature in that package!
+ """
+ implements(IVocabularyRegistry)
+ __slots__ = ()
+
+ def get(self, context, name):
+ """See zope.schema.interfaces.IVocabularyRegistry.
+ """
+ factory = getUtility(IVocabularyFactory, name)
+ return factory(context)
Copied: Zope/branches/2.12/src/Products/Five/tests/test_schema.py (from rev 104366, Zope/trunk/src/Products/Five/tests/test_schema.py)
===================================================================
--- Zope/branches/2.12/src/Products/Five/tests/test_schema.py (rev 0)
+++ Zope/branches/2.12/src/Products/Five/tests/test_schema.py 2009-09-22 18:59:58 UTC (rev 104433)
@@ -0,0 +1,59 @@
+##############################################################################
+#
+# Copyright (c) 2006 Zope Corporation and Contributors. All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+""" Unit tests for Products.Five.schema module.
+
+$Id: tests.py 71093 2006-11-07 13:54:29Z yuppie $
+"""
+import unittest
+from zope.testing.cleanup import CleanUp
+
+class Zope2VocabularyRegistryTests(unittest.TestCase, CleanUp):
+
+ def _getTargetClass(self):
+ from Products.Five.schema import Zope2VocabularyRegistry
+ return Zope2VocabularyRegistry
+
+ def _makeOne(self):
+ return self._getTargetClass()()
+
+ def test_class_conforms_to_IVocabularyRegistry(self):
+ from zope.interface.verify import verifyClass
+ from zope.schema.interfaces import IVocabularyRegistry
+ verifyClass(IVocabularyRegistry, self._getTargetClass())
+
+ def test_instance_conforms_to_IVocabularyRegistry(self):
+ from zope.interface.verify import verifyObject
+ from zope.schema.interfaces import IVocabularyRegistry
+ verifyObject(IVocabularyRegistry, self._makeOne())
+
+ def test_get_miss_raises_LookupError(self):
+ registry = self._makeOne()
+ context = object()
+ self.assertRaises(LookupError, registry.get, context, 'nonesuch')
+
+ def test_get_hit_finds_registered_IVocabularyFactory(self):
+ from zope.component import provideUtility
+ from zope.schema.interfaces import IVocabularyFactory
+ _marker = object()
+ def _factory(context):
+ return _marker
+ provideUtility(_factory, IVocabularyFactory, 'foundit')
+ registry = self._makeOne()
+ context = object()
+ found = registry.get(context, 'foundit')
+ self.failUnless(found is _marker)
+
+def test_suite():
+ return unittest.TestSuite((
+ unittest.makeSuite(Zope2VocabularyRegistryTests),
+ ))
More information about the Zope-Checkins
mailing list