[Erp5-report] r13197 - /erp5/trunk/products/CMFCategory/Category.py

nobody at svn.erp5.org nobody at svn.erp5.org
Sat Mar 3 00:03:11 CET 2007


Author: jp
Date: Sat Mar  3 00:03:08 2007
New Revision: 13197

URL: http://svn.erp5.org?rev=13197&view=rev
Log:
Added getCompactTitle support (as well as getCompactLogicalPath) which is useful for sites were the depth of categories in large. Actually, this should be teh standard default everywhere. Also added some aggressive caching. Still to be discussed if it is that good or not.

Modified:
    erp5/trunk/products/CMFCategory/Category.py

Modified: erp5/trunk/products/CMFCategory/Category.py
URL: http://svn.erp5.org/erp5/trunk/products/CMFCategory/Category.py?rev=13197&r1=13196&r2=13197&view=diff
==============================================================================
--- erp5/trunk/products/CMFCategory/Category.py (original)
+++ erp5/trunk/products/CMFCategory/Category.py Sat Mar  3 00:03:08 2007
@@ -31,12 +31,16 @@
 from Globals import InitializeClass, DTMLFile
 from AccessControl import ClassSecurityInfo
 from Acquisition import aq_base, aq_inner, aq_parent
+from Products.CMFCore.utils import getToolByName
 
 from Products.ERP5Type import Permissions
 from Products.ERP5Type import PropertySheet
 from Products.ERP5Type.Core.Folder import Folder
 from Products.CMFCategory.Renderer import Renderer
 from Products.ERP5Type.Utils import sortValueList
+from Products.ERP5Type.Cache import CachingMethod
+
+DEFAULT_CACHE_FACTORY = 'erp5_ui_long'
 
 from zLOG import LOG
 
@@ -175,6 +179,12 @@
         Returns translated logical path, started under base category.
       """
       return self.getLogicalPath(item_method='getTranslatedTitle')
+
+    def getCompactLogicalPath(self):
+      """
+        Returns compact logical path, started under base category.
+      """
+      return self.getLogicalPath(item_method='getCompactTitle')
 
     security.declareProtected(Permissions.AccessContentsInformation,
                                                     'getIndentedTitle')
@@ -278,7 +288,7 @@
     def getCategoryChildTranslatedTitleItemList(self, recursive=1, base=0, **kw):
       """
       Returns a list of tuples by parsing recursively all categories in a
-      given list of base categories. Uses getTitle as default method
+      given list of base categories. Uses getTranslatedTitle as default method
       """
       return self.getCategoryChildItemList(recursive=recursive,
                       display_id='translated_title', base=base, **kw)
@@ -301,6 +311,16 @@
       """
       return self.getCategoryChildItemList(recursive=recursive,
                                           display_id='title_and_id', base=base, **kw)
+
+    security.declareProtected(Permissions.AccessContentsInformation,
+                                       'getCategoryChildCompactTitleItemList')
+    def getCategoryChildCompactTitleItemList(self, recursive=1, base=0, **kw):
+      """
+      Returns a list of tuples by parsing recursively all categories in a
+      given list of base categories. Uses title_and_id as default method
+      """
+      return self.getCategoryChildItemList(recursive=recursive,
+                                          display_id='compact_title', base=base, **kw)
 
     security.declareProtected(Permissions.AccessContentsInformation,
                                                       'getCategoryChildLogicalPathItemList')
@@ -321,6 +341,15 @@
                                display_id='translated_logical_path', base=base, **kw)
 
     security.declareProtected(Permissions.AccessContentsInformation,
+                                                      'getCategoryChildCompactLogicalPathItemList')
+    def getCategoryChildCompactLogicalPathItemList(self, recursive=1, base=0, **kw):
+      """
+      Returns a list of tuples by parsing recursively all categories in a
+      given list of base categories. Uses getLogicalPath as default method
+      """
+      return self.getCategoryChildItemList(recursive=recursive, display_id='compact_logical_path', base=base, **kw)
+    
+    security.declareProtected(Permissions.AccessContentsInformation,
                                                       'getCategoryChildIndentedTitleItemList')
     def getCategoryChildIndentedTitleItemList(self, recursive=1, base=0, **kw):
       """
@@ -342,7 +371,8 @@
 
     security.declareProtected(Permissions.AccessContentsInformation,
                                                       'getCategoryChildItemList')
-    def getCategoryChildItemList(self, recursive=1, base=0, **kw):
+    def getCategoryChildItemList(self, recursive=1, base=0,
+                                       cache=DEFAULT_CACHE_FACTORY, **kw):
       """
       Returns a list of tuples by parsing recursively all categories in a
       given list of base categories. Each tuple contains::
@@ -360,8 +390,20 @@
 
       recursive -- if set to 0 do not apply recursively
       """
-      value_list = self.getCategoryChildValueList(recursive=recursive,**kw)
-      return Renderer(base=base, **kw).render(value_list)
+      def _renderCategoryChildItemList(recursive=1, base=0, **kw):
+        value_list = self.getCategoryChildValueList(recursive=recursive,**kw)
+        return Renderer(base=base, **kw).render(value_list)
+
+      if not cache:
+        return _renderCategoryChildItemList(recursive=recursive, base=base, **kw)
+
+      # Some methods are language dependent so we include the language in the key
+      localizer = getToolByName(self, 'Localizer')
+      language = localizer.get_selected_language() 
+      m = CachingMethod(_renderCategoryChildItemList,
+                        ('Category_getCategoryChildItemList', language, self.getPath()))
+
+      return m(recursive=recursive, base=base, **kw)
 
     # Alias for compatibility
     security.declareProtected(Permissions.View, 'getFormItemList')




More information about the Erp5-report mailing list