[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