[Erp5-report] r9709 - /erp5/trunk/products/ERP5/Tool/CategoryTool.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed Sep 6 17:26:40 CEST 2006
Author: vincent
Date: Wed Sep 6 17:26:39 2006
New Revision: 9709
URL: http://svn.erp5.org?rev=9709&view=rev
Log:
Implement getBaseCategoryDict, a cached version of getBaseCategoryList which should be used to check if a base category is present (dict key searching is O(1), which is always better than list searching, even if sorted).
Modified:
erp5/trunk/products/ERP5/Tool/CategoryTool.py
Modified: erp5/trunk/products/ERP5/Tool/CategoryTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Tool/CategoryTool.py?rev=9709&r1=9708&r2=9709&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Tool/CategoryTool.py (original)
+++ erp5/trunk/products/ERP5/Tool/CategoryTool.py Wed Sep 6 17:26:39 2006
@@ -41,6 +41,7 @@
from Products.ERP5Type.CopySupport import CopyContainer
from Products.CMFCore.utils import getToolByName
from Products.ERP5Type.Document import newTempBase
+from Products.ERP5Type.Cache import CachingMethod
from zLOG import LOG
@@ -121,6 +122,16 @@
security.declareProtected(Permissions.AccessContentsInformation, 'getUids')
getUids = getCategoryParentUidList
+ def getBaseCategoryDict(self):
+ """
+ Cached method to which resturns a dict with category names as keys, and None as values.
+ This allows to search for an element existence in the list faster.
+ ie: if x in self.getPortalObject().portal_categories.getBaseCategoryDict()
+ """
+ def getBaseCategoryDict(self):
+ return dict.fromkeys(self.getBaseCategoryList(), None)
+ return CachingMethod(getBaseCategoryDict, 'portal_categories.getBaseCategoryDict', cache_duration=None)(self)
+
def updateRelatedContent(self, context,
previous_category_url, new_category_url):
"""See CMFCategory.CategoryTool.updateRelatedContent
More information about the Erp5-report
mailing list