[Erp5-report] r29873 - /erp5/trunk/products/ERP5Type/Core/Folder.py

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Oct 21 15:44:30 CEST 2009


Author: leonardo
Date: Wed Oct 21 15:44:27 2009
New Revision: 29873

URL: http://svn.erp5.org?rev=29873&view=rev
Log:
Fix Folder.contentValues for CMF 2.2 compatibility (they no longer accept 'spec' parameter) plus performance work by jm (approved by jm)

Modified:
    erp5/trunk/products/ERP5Type/Core/Folder.py

Modified: erp5/trunk/products/ERP5Type/Core/Folder.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Core/Folder.py?rev=29873&r1=29872&r2=29873&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Core/Folder.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/Core/Folder.py [utf8] Wed Oct 21 15:44:27 2009
@@ -35,6 +35,7 @@
 
 from Products.CMFCore.utils import _getAuthenticatedUser
 from Products.CMFCore.CMFCatalogAware import CMFCatalogAware
+from Products.CMFCore.PortalFolder import ContentFilter
 
 from Products.ERP5Type.Base import Base
 from Products.ERP5Type.CopySupport import CopyContainer
@@ -1433,24 +1434,17 @@
 
   security.declareProtected( Permissions.AccessContentsInformation,
                              'contentValues' )
-  def contentValues(self, spec=None, meta_type=None, portal_type=None,
-                    sort_on=None, sort_order=None, checked_permission=None, **kw):
-    # Returns a list of documents contained in this folder.
-    # ( no docstring to prevent publishing )
-    if meta_type is not None:
-      spec = meta_type
-    if portal_type is not None:
-      kw['portal_type'] = portal_type
-    filter = kw.pop('filter', {}) or {}
-    kw.update(filter)
-    if self._folder_handler == HBTREE_HANDLER:
-      object_list = CMFHBTreeFolder.contentValues(self, spec=spec, filter=kw)
-    else:
-      object_list = CMFBTreeFolder.contentValues(self, spec=spec, filter=kw)
-    if checked_permission is not None:
-      checkPermission = getSecurityManager().checkPermission
-      object_list = [o for o in object_list if checkPermission(checked_permission, o)]
-    object_list = sortValueList(object_list, sort_on, sort_order, **kw)
+  def contentValues(self, *args, **kw):
+    filter_kw = kw.pop('filter', None) or {}
+    portal_type_id_list = self._getTypesTool().objectIds()
+    if 'portal_type' in filter_kw:
+      kw['portal_type'] = [x for x in filter_kw.pop('portal_type')
+                             if x in portal_type_id_list]
+    elif 'portal_type' not in kw:
+      kw['portal_type'] = portal_type_id_list
+    object_list = self.objectValues(*args, **kw)
+    if filter_kw:
+      object_list = filter(ContentFilter(**filter_kw), object_list)
     return object_list
 
   # Override security declaration of CMFCore/PortalFolder (used by CMFBTreeFolder)




More information about the Erp5-report mailing list