Commit 55420954 authored by Jérome Perrin's avatar Jérome Perrin

allow to specify in CatalogTool the max number of result to retrieve by

default. Use this feature in testERP5Catalog not to have to create more than
1000 documents.


git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@13387 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent 55538fae
...@@ -73,8 +73,6 @@ try: ...@@ -73,8 +73,6 @@ try:
except ImportError: except ImportError:
pass pass
DEFAULT_RESULT_LIMIT = 1000
def getSecurityProduct(acl_users): def getSecurityProduct(acl_users):
"""returns the security used by the user folder passed. """returns the security used by the user folder passed.
(NuxUserGroup, ERP5Security, or None if anything else). (NuxUserGroup, ERP5Security, or None if anything else).
...@@ -183,7 +181,8 @@ class CatalogTool (UniqueObject, ZCatalog, CMFCoreCatalogTool, ActiveObject): ...@@ -183,7 +181,8 @@ class CatalogTool (UniqueObject, ZCatalog, CMFCoreCatalogTool, ActiveObject):
id = 'portal_catalog' id = 'portal_catalog'
meta_type = 'ERP5 Catalog' meta_type = 'ERP5 Catalog'
security = ClassSecurityInfo() security = ClassSecurityInfo()
default_result_limit = 1000
manage_options = ( { 'label' : 'Overview', 'action' : 'manage_overview' }, manage_options = ( { 'label' : 'Overview', 'action' : 'manage_overview' },
) + ZCatalog.manage_options ) + ZCatalog.manage_options
...@@ -511,7 +510,7 @@ class CatalogTool (UniqueObject, ZCatalog, CMFCoreCatalogTool, ActiveObject): ...@@ -511,7 +510,7 @@ class CatalogTool (UniqueObject, ZCatalog, CMFCoreCatalogTool, ActiveObject):
kw[ 'expires' ] = { 'query' : now, 'range' : 'min' } kw[ 'expires' ] = { 'query' : now, 'range' : 'min' }
query = self.getSecurityQuery(query=query, **kw) query = self.getSecurityQuery(query=query, **kw)
kw.setdefault('limit', DEFAULT_RESULT_LIMIT) kw.setdefault('limit', self.default_result_limit)
return ZCatalog.searchResults(self, query=query, **kw) return ZCatalog.searchResults(self, query=query, **kw)
__call__ = searchResults __call__ = searchResults
...@@ -520,7 +519,7 @@ class CatalogTool (UniqueObject, ZCatalog, CMFCoreCatalogTool, ActiveObject): ...@@ -520,7 +519,7 @@ class CatalogTool (UniqueObject, ZCatalog, CMFCoreCatalogTool, ActiveObject):
def unrestrictedSearchResults(self, REQUEST=None, **kw): def unrestrictedSearchResults(self, REQUEST=None, **kw):
"""Calls ZSQLCatalog.searchResults directly without restrictions. """Calls ZSQLCatalog.searchResults directly without restrictions.
""" """
kw.setdefault('limit', DEFAULT_RESULT_LIMIT) kw.setdefault('limit', self.default_result_limit)
return ZCatalog.searchResults(self, REQUEST, **kw) return ZCatalog.searchResults(self, REQUEST, **kw)
# We use a string for permissions here due to circular reference in import # We use a string for permissions here due to circular reference in import
...@@ -551,7 +550,7 @@ class CatalogTool (UniqueObject, ZCatalog, CMFCoreCatalogTool, ActiveObject): ...@@ -551,7 +550,7 @@ class CatalogTool (UniqueObject, ZCatalog, CMFCoreCatalogTool, ActiveObject):
# #kw[ 'expires' ] = { 'query' : now, 'range' : 'min' } # #kw[ 'expires' ] = { 'query' : now, 'range' : 'min' }
query = self.getSecurityQuery(query=query, **kw) query = self.getSecurityQuery(query=query, **kw)
kw.setdefault('limit', DEFAULT_RESULT_LIMIT) kw.setdefault('limit', self.default_result_limit)
return ZCatalog.countResults(self, query=query, **kw) return ZCatalog.countResults(self, query=query, **kw)
security.declarePrivate('unrestrictedCountResults') security.declarePrivate('unrestrictedCountResults')
......
...@@ -1329,11 +1329,18 @@ class TestERP5Catalog(ERP5TypeTestCase, LogInterceptor): ...@@ -1329,11 +1329,18 @@ class TestERP5Catalog(ERP5TypeTestCase, LogInterceptor):
message = 'Test Limit' message = 'Test Limit'
ZopeTestCase._print('\n%s ' % message) ZopeTestCase._print('\n%s ' % message)
LOG('Testing... ',0,message) LOG('Testing... ',0,message)
#Create 1002 Organisations
for i in xrange(1002): ctool = self.getCatalogTool()
self._makeOrganisation(title='abc%s' % (i),description='abc') old_default_result_limit = cool.default_result_limit
self.assertEqual(1000,len(self.getCatalogTool()(portal_type='Organisation'))) max_ = 10
self.assertEqual(1002,len(self.getCatalogTool()(portal_type='Organisation',limit=None))) #Create max + 2 Organisations
for i in xrange(max_ + 2):
self._makeOrganisation(title='abc%s' % (i), description='abc')
self.assertEqual(max_,
len(self.getCatalogTool()(portal_type='Organisation')))
self.assertEqual(max + 2,
len(self.getCatalogTool()(portal_type='Organisation', limit=None)))
ctool.default_result_limit = old_default_result_limit
def playActivityList(self, method_id_list): def playActivityList(self, method_id_list):
get_transaction().commit() get_transaction().commit()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment