From bbb58095024f3b12aebf6b3f0a039503565d8ebc Mon Sep 17 00:00:00 2001 From: Yoshinori Okuji <yo@nexedi.com> Date: Mon, 13 Dec 2004 17:57:15 +0000 Subject: [PATCH] Support queued indexing. git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@2004 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5Type/Base.py | 21 +++++++++++++++++++-- product/ERP5Type/Document/Folder.py | 29 ++++++++++++++++++++++------- 2 files changed, 41 insertions(+), 9 deletions(-) diff --git a/product/ERP5Type/Base.py b/product/ERP5Type/Base.py index 67a910b9e2..42f31a34e3 100755 --- a/product/ERP5Type/Base.py +++ b/product/ERP5Type/Base.py @@ -1376,7 +1376,7 @@ class Base( CopyContainer, PortalContent, ActiveObject, ERP5PropertyManager ): """ if self.isIndexable: #LOG("immediateReindexObject",0,self.getRelativeUrl()) - PortalContent.reindexObject(self) + PortalContent.reindexObject(self, *args, **kw) else: pass #LOG("No reindex now",0,self.getRelativeUrl()) @@ -1391,7 +1391,24 @@ class Base( CopyContainer, PortalContent, ActiveObject, ERP5PropertyManager ): args / kw required since we must follow API """ if self.isIndexable: - self.activate().immediateReindexObject() + self.activate().immediateReindexObject(*args, **kw) + + 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: + self.activate().immediateQueueCataloggedObject(*args, **kw) + + security.declarePublic('recursiveQueueCataloggedObject') + recursiveQueueCataloggedObject = queueCataloggedObject security.declareProtected( Permissions.AccessContentsInformation, 'asXML' ) def asXML(self, ident=0): diff --git a/product/ERP5Type/Document/Folder.py b/product/ERP5Type/Document/Folder.py index 6b6e8ceb61..d644fc7ea6 100755 --- a/product/ERP5Type/Document/Folder.py +++ b/product/ERP5Type/Document/Folder.py @@ -429,25 +429,25 @@ be a problem).""" # Catalog related security.declarePublic( 'reindexObject' ) - def reindexObject(self, idxs=[]): + def reindexObject(self, *args, **kw): """ Fixes the hierarchy structure (use of Base class) XXXXXXXXXXXXXXXXXXXXXXXX BUG here : when creating a new base category """ - return Base.reindexObject(self) + return Base.reindexObject(self, *args, **kw) security.declarePublic( 'recursiveReindexObject' ) - def recursiveReindexObject(self): + def recursiveReindexObject(self, *args, **kw): """ Fixes the hierarchy structure (use of Base class) XXXXXXXXXXXXXXXXXXXXXXXX BUG here : when creating a new base category """ - self.activate().recursiveImmediateReindexObject() + self.activate().recursiveImmediateReindexObject(*args, **kw) security.declarePublic( 'recursiveImmediateReindexObject' ) - def recursiveImmediateReindexObject(self): + def recursiveImmediateReindexObject(self, *args, **kw): """ Applies immediateReindexObject recursively """ @@ -455,11 +455,26 @@ be a problem).""" self.flushActivity(invoke = 0, method_id='immediateReindexObject') # This might create a recursive lock self.flushActivity(invoke = 0, method_id='recursiveImmediateReindexObject') # This might create a recursive lock if self.isIndexable: - self.immediateReindexObject() + self.immediateReindexObject(*args, **kw) # Reindex contents for c in self.objectValues(): if hasattr(aq_base(c), 'recursiveImmediateReindexObject'): - c.recursiveImmediateReindexObject() + c.recursiveImmediateReindexObject(*args, **kw) + + security.declarePublic( 'recursiveQueueCataloggedObject' ) + def recursiveQueueCataloggedObject(self, *args, **kw): + """ + Apply queueCataloggedObject recursively + """ + # Index self + self.flushActivity(invoke = 0, method_id='queueCataloggedObject') # This might create a recursive lock + self.flushActivity(invoke = 0, method_id='recursiveQueueCataloggedObject') # This might create a recursive lock + if self.isIndexable: + self.queueCataloggedObject(*args, **kw) + # Index contents + for c in self.objectValues(): + if hasattr(aq_base(c), 'recursiveQueueCataloggedObject'): + c.recursiveQueueCataloggedObject(*args, **kw) security.declareProtected( Permissions.ModifyPortalContent, 'recursiveMoveObject' ) def recursiveMoveObject(self): -- 2.30.9