[Checkins] SVN: Products.CMFCore/branches/miwa-catalog-adapter/Products/CMFCore/ adjust catalog to use adapter for the wrapper

Miles Waller miles at jamkit.com
Mon Mar 16 10:55:55 EDT 2009


Log message for revision 98142:
  adjust catalog to use adapter for the wrapper

Changed:
  U   Products.CMFCore/branches/miwa-catalog-adapter/Products/CMFCore/CatalogTool.py
  A   Products.CMFCore/branches/miwa-catalog-adapter/Products/CMFCore/implements.zcml
  U   Products.CMFCore/branches/miwa-catalog-adapter/Products/CMFCore/tests/test_CatalogTool.py

-=-
Modified: Products.CMFCore/branches/miwa-catalog-adapter/Products/CMFCore/CatalogTool.py
===================================================================
--- Products.CMFCore/branches/miwa-catalog-adapter/Products/CMFCore/CatalogTool.py	2009-03-16 14:55:31 UTC (rev 98141)
+++ Products.CMFCore/branches/miwa-catalog-adapter/Products/CMFCore/CatalogTool.py	2009-03-16 14:55:55 UTC (rev 98142)
@@ -25,6 +25,7 @@
 from Products.PluginIndexes.common import safe_callable
 from Products.ZCatalog.ZCatalog import ZCatalog
 from zope.interface import implements
+from zope.component import adapts
 from zope.interface import providedBy
 from zope.interface.declarations import getObjectSpecification
 from zope.interface.declarations import ObjectSpecification
@@ -33,6 +34,7 @@
 from Products.CMFCore.ActionProviderBase import ActionProviderBase
 from Products.CMFCore.interfaces import ICatalogTool
 from Products.CMFCore.interfaces import IIndexableObjectWrapper
+from Products.CMFCore.interfaces import IContentish
 from Products.CMFCore.permissions import AccessInactivePortalContent
 from Products.CMFCore.permissions import ManagePortal
 from Products.CMFCore.permissions import View
@@ -62,6 +64,7 @@
 class IndexableObjectWrapper(object):
 
     implements(IIndexableObjectWrapper)
+    adapts(IContentish, ICatalogTool)
     __providedBy__ = IndexableObjectSpecification()
 
     def __init__(self, ob, catalog):
@@ -69,6 +72,8 @@
         wftool = getToolByName(catalog, 'portal_workflow', None)
         if wftool is not None:
             self.__vars = wftool.getCatalogVariablesFor(ob)
+        else:
+            self.__vars = {}
         self.__ob = ob
 
     def __str__(self):
@@ -253,7 +258,7 @@
         # information just before cataloging.
         # XXX: this method violates the rules for tools/utilities:
         # it depends on a non-utility tool
-        w = getMultiAdapter((object, self), IIndexableObjectWrapper)
+        w = getMultiAdapter((obj, self), IIndexableObjectWrapper)
         ZCatalog.catalog_object(self, w, uid, idxs, update_metadata,
                                 pghandler)
 

Added: Products.CMFCore/branches/miwa-catalog-adapter/Products/CMFCore/implements.zcml
===================================================================
--- Products.CMFCore/branches/miwa-catalog-adapter/Products/CMFCore/implements.zcml	                        (rev 0)
+++ Products.CMFCore/branches/miwa-catalog-adapter/Products/CMFCore/implements.zcml	2009-03-16 14:55:55 UTC (rev 98142)
@@ -0,0 +1,11 @@
+<configure
+    xmlns="http://namespaces.zope.org/zope">
+
+  <!-- Default wrapper for indexing IContentish objects -->
+  <adapter
+      for="Products.CMFCore.interfaces.IContentish
+           Products.CMFCore.interfaces.ICatalogTool"
+      provides="Products.CMFCore.interfaces.IIndexableObjectWrapper"
+      factory="Products.CMFCore.CatalogTool.IndexableObjectWrapper" />
+
+</configure>

Modified: Products.CMFCore/branches/miwa-catalog-adapter/Products/CMFCore/tests/test_CatalogTool.py
===================================================================
--- Products.CMFCore/branches/miwa-catalog-adapter/Products/CMFCore/tests/test_CatalogTool.py	2009-03-16 14:55:31 UTC (rev 98141)
+++ Products.CMFCore/branches/miwa-catalog-adapter/Products/CMFCore/tests/test_CatalogTool.py	2009-03-16 14:55:55 UTC (rev 98142)
@@ -19,6 +19,7 @@
 
 from Acquisition import Implicit
 from zope.interface import implements
+from zope.component import getMultiAdapter
 from Products.CMFCore.interfaces import ICatalogTool
 from Products.CMFCore.tests.base.testcase import SecurityTest
 
@@ -35,7 +36,7 @@
     def __init__(self, vars):
         self._vars = vars
 
-    def getCatalogVariablesFor(self):
+    def getCatalogVariablesFor(self, ob):
         return self._vars
 
 class IndexableObjectWrapperTests(unittest.TestCase):
@@ -45,9 +46,9 @@
 
         return IndexableObjectWrapper
 
-    def _makeOne(self, obj, vars):
+    def _makeOne(self, vars, obj):
         self.root = FakeFolder()
-        self.root.portal_catalog = FakeFolder('portal_catalog')
+        self.root.portal_catalog = FakeCatalog()
         self.root.portal_workflow = FakeWorkflowTool(vars)
         catalog = self.root.portal_catalog
         return self._getTargetClass()(obj, catalog)
@@ -98,6 +99,15 @@
         self.failUnless(IContentish.providedBy(w))
         self.failUnless(IIndexableObjectWrapper.providedBy(w))
 
+    def test_adapts(self):
+        from zope.component import adaptedBy
+        from Products.CMFCore.interfaces import IContentish
+        from Products.CMFCore.interfaces import ICatalogTool
+
+        w = self._getTargetClass()
+        adapts =  adaptedBy(w) 
+        self.assertEqual(adapts, (IContentish, ICatalogTool))
+
 class CatalogToolTests(SecurityTest):
 
     def _getTargetClass(self):
@@ -110,6 +120,15 @@
 
     def _makeContent(self, *args, **kw):
         from Products.CMFCore.tests.base.dummy import DummyContent
+        from Products.CMFCore.interfaces import ICatalogTool
+        from Products.CMFCore.interfaces import IContentish
+        from Products.CMFCore.interfaces import IIndexableObjectWrapper
+        from Products.CMFCore.CatalogTool import IndexableObjectWrapper
+
+        from zope.component import getSiteManager
+        self.sm = getSiteManager()
+        self.sm.registerAdapter(IndexableObjectWrapper, (IContentish, ICatalogTool), IIndexableObjectWrapper)
+
         return DummyContent(*args, **kw)
 
     def test_interfaces(self):



More information about the Checkins mailing list