[Checkins] SVN: Products.CMFCore/branches/rossp-intid/Products/CMFCore/ intid ZCatalog compat, involves fixing the iro specificity of
Ross Patterson
me at rpatterson.net
Wed Nov 2 23:58:05 UTC 2011
Log message for revision 123266:
intid ZCatalog compat, involves fixing the iro specificity of
indexable wrappers.
Changed:
U Products.CMFCore/branches/rossp-intid/Products/CMFCore/CatalogTool.py
U Products.CMFCore/branches/rossp-intid/Products/CMFCore/content.zcml
-=-
Modified: Products.CMFCore/branches/rossp-intid/Products/CMFCore/CatalogTool.py
===================================================================
--- Products.CMFCore/branches/rossp-intid/Products/CMFCore/CatalogTool.py 2011-11-02 23:29:33 UTC (rev 123265)
+++ Products.CMFCore/branches/rossp-intid/Products/CMFCore/CatalogTool.py 2011-11-02 23:58:05 UTC (rev 123266)
@@ -21,13 +21,17 @@
from DateTime.DateTime import DateTime
from Products.PluginIndexes.common import safe_callable
from Products.ZCatalog.ZCatalog import ZCatalog
+from zope import interface
from zope.interface import implements
+from zope import component
from zope.component import adapts
from zope.component import queryMultiAdapter
from zope.interface import providedBy
+from zope.interface import implementedBy
from zope.interface.declarations import getObjectSpecification
-from zope.interface.declarations import ObjectSpecification
+from zope.interface.declarations import Provides
from zope.interface.declarations import ObjectSpecificationDescriptor
+from zope.keyreference import interfaces as keyref_ifaces
from Products.CMFCore.ActionProviderBase import ActionProviderBase
from Products.CMFCore.interfaces import ICatalogTool
@@ -53,9 +57,11 @@
if inst is None:
return getObjectSpecification(cls)
else:
- provided = providedBy(inst._IndexableObjectWrapper__ob)
- cls = type(inst)
- return ObjectSpecification(provided, cls)
+ assert cls is not None
+ obj = inst._IndexableObjectWrapper__ob
+ provided = providedBy(obj)
+ return Provides(
+ type(obj), implementedBy(cls), provided)
class IndexableObjectWrapper(object):
@@ -115,6 +121,12 @@
return cmf_uid
+ at interface.implementer(keyref_ifaces.IKeyReference)
+ at component.adapter(IIndexableObjectWrapper)
+def getObjectWrapperKeyReference(wrapper):
+ return keyref_ifaces.IKeyReference(wrapper._IndexableObjectWrapper__ob)
+
+
class CatalogTool(UniqueObject, ZCatalog, ActionProviderBase):
""" This is a ZCatalog that filters catalog queries.
@@ -270,15 +282,13 @@
def indexObject(self, object):
"""Add to catalog.
"""
- url = self.__url(object)
- self.catalog_object(object, url)
+ self.catalog_object(object)
security.declarePrivate('unindexObject')
def unindexObject(self, object):
"""Remove from catalog.
"""
- url = self.__url(object)
- self.uncatalog_object(url)
+ self.uncatalog_object(object)
security.declarePrivate('reindexObject')
def reindexObject(self, object, idxs=[], update_metadata=1):
@@ -294,6 +304,8 @@
# Filter out invalid indexes.
valid_indexes = self._catalog.indexes.keys()
idxs = [i for i in idxs if i in valid_indexes]
- self.catalog_object(object, idxs, update_metadata)
+ self.catalog_object(object, idxs=idxs,
+ update_metadata=update_metadata)
InitializeClass(CatalogTool)
+
Modified: Products.CMFCore/branches/rossp-intid/Products/CMFCore/content.zcml
===================================================================
--- Products.CMFCore/branches/rossp-intid/Products/CMFCore/content.zcml 2011-11-02 23:29:33 UTC (rev 123265)
+++ Products.CMFCore/branches/rossp-intid/Products/CMFCore/content.zcml 2011-11-02 23:58:05 UTC (rev 123266)
@@ -2,6 +2,9 @@
xmlns="http://namespaces.zope.org/zope"
xmlns:five="http://namespaces.zope.org/five">
+ <include package="zope.keyreference" />
+ <include package="zope.intid" file="subscribers.zcml" />
+
<adapter
name="add"
factory=".namespace.AddViewTraverser"
@@ -35,5 +38,8 @@
.interfaces.ICatalogTool"
provides=".interfaces.IIndexableObject"
factory=".CatalogTool.IndexableObjectWrapper" />
+ <adapter
+ factory=".CatalogTool.getObjectWrapperKeyReference"
+ trusted="y" />
</configure>
More information about the checkins
mailing list