[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