From e279752ce9101a5a3bea4c1e3e4c9dcc58d94836 Mon Sep 17 00:00:00 2001
From: Yoshinori Okuji <yo@nexedi.com>
Date: Thu, 15 Sep 2005 16:29:01 +0000
Subject: [PATCH] Use group_method_id for reindexObject.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@3791 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5Type/Base.py | 36 +++++++++++++++++-------------------
 1 file changed, 17 insertions(+), 19 deletions(-)

diff --git a/product/ERP5Type/Base.py b/product/ERP5Type/Base.py
index 5e3214dc58..b82ff470d4 100755
--- a/product/ERP5Type/Base.py
+++ b/product/ERP5Type/Base.py
@@ -1701,10 +1701,26 @@ class Base( CopyContainer, PortalContent, ActiveObject, ERP5PropertyManager ):
       Reindexes an object
       args / kw required since we must follow API
     """
-    self.activate(**kw).immediateReindexObject(*args, **kw)
+    self._reindexObject(*args, **kw)
+        
+  def _reindexObject(self, *args, **kw):
+    # When the activity supports group methods, portal_catalog/catalogObjectList is called instead of
+    # immediateReindexObject.
+    root_indexable = int(getattr(self.getPortalObject(),'isIndexable',1))
+    if self.isIndexable and root_indexable:
+      self.activate(group_method_id='portal_catalog/catalogObjectList', **kw).immediateReindexObject(*args, **kw)
 
   security.declarePublic('recursiveReindexObject')
   recursiveReindexObject = reindexObject
+  
+  security.declareProtected( Permissions.AccessContentsInformation, 'getIndexableChildValueList' )
+  def getIndexableChildValueList(self):
+    """
+      Get indexable childen recursively.
+    """
+    if self.isIndexable:
+      return [self]
+    return []
 
   security.declareProtected(Permissions.ModifyPortalContent, 'reindexObjectSecurity')
   def reindexObjectSecurity(self):
@@ -1716,24 +1732,6 @@ class Base( CopyContainer, PortalContent, ActiveObject, ERP5PropertyManager ):
     #LOG('reindexObjectSecurity', 0, 'self = %r, self.getPath() = %r' % (self, self.getPath()))
     self.reindexObject()
 
-  def immediateQueueCataloggedObject(self, *args, **kw):
-    if self.isIndexable:
-      catalog_tool = getToolByName(self, 'portal_catalog', None)
-      if catalog_tool is not None:
-        catalog_tool.queueCataloggedObject(self, *args, **kw)
-
-  security.declarePublic('queueCataloggedObject')
-  def queueCataloggedObject(self, *args, **kw):
-    """
-      Index an object in a deferred manner.
-    """
-    if self.isIndexable:
-      #LOG('queueCataloggedObject', 0, 'activate immediateQueueCataloggedObject on %s' % self.getPath())
-      self.activate(**kw).immediateQueueCataloggedObject(*args, **kw)
-
-  security.declarePublic('recursiveQueueCataloggedObject')
-  recursiveQueueCataloggedObject = queueCataloggedObject
-
   security.declareProtected( Permissions.AccessContentsInformation, 'asXML' )
   def asXML(self, ident=0):
     """
-- 
2.30.9