[Erp5-report] r29909 - /erp5/trunk/products/ERP5Type/Core/Folder.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Thu Oct 22 11:32:40 CEST 2009
Author: jm
Date: Thu Oct 22 11:32:39 2009
New Revision: 29909
URL: http://svn.erp5.org?rev=29909&view=rev
Log:
Fix and reapply [29873] (rewrite Folder.contentValues for CMF 2.2 and performance)
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=29909&r1=29908&r2=29909&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Core/Folder.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/Core/Folder.py [utf8] Thu Oct 22 11:32:39 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,21 @@
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):
+ def contentValues(self, *args, **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)
+ filter_kw = kw.pop('filter', None) or {}
+ portal_type_id_list = self._getTypesTool().objectIds()
+ if 'portal_type' in filter_kw:
+ portal_type = filter_kw.pop('portal_type')
+ if isinstance(portal_type, str):
+ portal_type = portal_type,
+ kw['portal_type'] = [x for x in 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