[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