[Erp5-report] r15483 - /erp5/trunk/products/ERP5Catalog/CatalogTool.py

nobody at svn.erp5.org nobody at svn.erp5.org
Mon Aug 6 10:27:47 CEST 2007


Author: vincent
Date: Mon Aug  6 10:27:47 2007
New Revision: 15483

URL: http://svn.erp5.org?rev=15483&view=rev
Log:
Add a cache in getSecurityUidListAndRoleColumnDict.

Modified:
    erp5/trunk/products/ERP5Catalog/CatalogTool.py

Modified: erp5/trunk/products/ERP5Catalog/CatalogTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Catalog/CatalogTool.py?rev=15483&r1=15482&r2=15483&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Catalog/CatalogTool.py (original)
+++ erp5/trunk/products/ERP5Catalog/CatalogTool.py Mon Aug  6 10:27:47 2007
@@ -38,6 +38,7 @@
 from Acquisition import aq_base, aq_inner, aq_parent
 from DateTime.DateTime import DateTime
 from Products.CMFActivity.ActiveObject import ActiveObject
+from Products.ERP5Type.Cache import CachingMethod
 
 from AccessControl.PermissionRole import rolesForPermissionOn
 
@@ -464,8 +465,6 @@
       """
         Return a list of security Uids and a dictionnary containing available
         role columns.
-        
-        TODO: Add a cache.
       """
       allowedRolesAndUsers, role_column_dict = self.getAllowedRolesAndUsers(**kw)
       catalog = self.getSQLCatalog()
@@ -475,10 +474,16 @@
                                   "deprecated. Please update your catalog "\
                                   "business template."
       if allowedRolesAndUsers:
-        # XXX: What with this string transformation ?! Souldn't it be done in
-        # dtml instead ?
-        allowedRolesAndUsers = ["'%s'" % (role, ) for role in allowedRolesAndUsers]
-        security_uid_list = [x.uid for x in method(security_roles_list = allowedRolesAndUsers)]
+        allowedRolesAndUsers.sort()
+        def _getSecurityUidList(allowedRolesAndUsers):
+          # XXX: What with this string transformation ?! Souldn't it be done in
+          # dtml instead ?
+          allowedRolesAndUsers = ["'%s'" % (role, ) for role in allowedRolesAndUsers]
+          security_uid_list = [x.uid for x in method(security_roles_list = allowedRolesAndUsers)]
+        _getSecurityUidList = CachingMethod(_getSecurityUidList,
+                                            id='_getSecurityUidList',
+                                            cache_factory='erp5_ui_short')
+        security_uid_list = _getSecurityUidList(allowedRolesAndUsers)
       else:
         security_uid_list = []
       return security_uid_list, role_column_dict




More information about the Erp5-report mailing list