From f3534e8f61a3e321f7cb00a8942166b271e94e46 Mon Sep 17 00:00:00 2001
From: Kazuhiko SHIOZAKI <kazuhiko@nexedi.com>
Date: Mon, 20 Jan 2025 16:54:33 +0100
Subject: [PATCH] fixup! fixup! erp5_full_text_mroonga_catalog: defer fulltext
 index and unindex using...

no need to wrap object list in case of deferred index, otherwise another security_uid
can be issued.
---
 product/ERP5Catalog/CatalogTool.py | 5 ++++-
 product/ZSQLCatalog/ZSQLCatalog.py | 7 ++++++-
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/product/ERP5Catalog/CatalogTool.py b/product/ERP5Catalog/CatalogTool.py
index 9ef57fd97ac..f5fba5ded9c 100644
--- a/product/ERP5Catalog/CatalogTool.py
+++ b/product/ERP5Catalog/CatalogTool.py
@@ -889,10 +889,13 @@ class CatalogTool (UniqueObject, ZCatalog, CMFCoreCatalogTool, ActiveObject):
         """
         return ZCatalog.countResults(self, REQUEST, **kw)
 
-    def wrapObjectList(self, object_value_list, catalog_value):
+    def wrapObjectList(self, object_value_list, catalog_value, deferred=False):
       """
         Return a list of wrapped objects for reindexing.
       """
+      if deferred:
+        # No need to wrap
+        return object_value_list
       portal = self.getPortalObject()
 
       user_set = set()
diff --git a/product/ZSQLCatalog/ZSQLCatalog.py b/product/ZSQLCatalog/ZSQLCatalog.py
index 59897411b40..043f17f7f3d 100644
--- a/product/ZSQLCatalog/ZSQLCatalog.py
+++ b/product/ZSQLCatalog/ZSQLCatalog.py
@@ -671,7 +671,7 @@ class ZCatalog(Folder, Persistent, Implicit):
     return []
 
   security.declarePrivate('wrapObjectList')
-  def wrapObjectList(self, object_value_list, catalog_value):
+  def wrapObjectList(self, object_value_list, catalog_value, deferred=False):
     """
       Return a list of wrapped objects for reindexing.
 
@@ -690,6 +690,7 @@ class ZCatalog(Folder, Persistent, Implicit):
     """Catalog a list of objects.
     """
     catalog = self.getSQLCatalog(sql_catalog_id)
+    deferred = kw.get('deferred', False)
     hot_reindexing = (self.hot_reindexing_state is not None) and \
                      (catalog is not None) and \
                      (self.source_sql_catalog_id == catalog.id)
@@ -791,6 +792,7 @@ class ZCatalog(Folder, Persistent, Implicit):
             self.wrapObjectList(
               object_value_list=d['obj'],
               catalog_value=destination_catalog,
+              deferred=deferred,
             ),
             **kw
           )
@@ -801,6 +803,7 @@ class ZCatalog(Folder, Persistent, Implicit):
               self.wrapObjectList(
                 object_value_list=d['obj'],
                 catalog_value=archive_catalog,
+                deferred=deferred,
               ),
               **kw
             )
@@ -815,6 +818,7 @@ class ZCatalog(Folder, Persistent, Implicit):
           self.wrapObjectList(
             object_value_list=current_catalog_object_list,
             catalog_value=catalog,
+            deferred=deferred,
           ),
           **kw
         )
@@ -828,6 +832,7 @@ class ZCatalog(Folder, Persistent, Implicit):
               self.wrapObjectList(
                 object_value_list=object_set,
                 catalog_value=destination_catalog,
+                deferred=deferred,
               ),
               **kw
             )
-- 
2.30.9