def testOrphan(self): '''Test orphan collection''' for bsize in (6, 7): b = Batch(range(bsize), 5, orphan=3) assert b.next is None assert len(b) == bsize assert b[bsize - 1] == bsize - 1 assert b.sequence_length == bsize b = Batch(range(8), 5) assert len(b) == 5 assert b.sequence_length == 8 assert len(b.next) == 3
def resultsBatch(self, results, REQUEST, size=20, orphan=2, overlap=0): """ ZMI helper for getting batching for displaying search results """ try: start_val = REQUEST.get('batch_start', '0') start = int(start_val) size = int(REQUEST.get('batch_size', size)) except ValueError: start = 0 batch = Batch(results, size, start, 0, orphan, overlap) if batch.end < len(results): qs = self._getBatchLink(REQUEST.get('QUERY_STRING', ''), start, batch.end) REQUEST.set('next_batch_url', '%s?%s' % (REQUEST.get('URL'), qs)) if start > 0: new_start = start - size - 1 if new_start < 0: new_start = 0 qs = self._getBatchLink(REQUEST.get('QUERY_STRING', ''), start, new_start) REQUEST.set('previous_batch_url', '%s?%s' % (REQUEST.get('URL'), qs)) return batch
def testLengthEqualsSizePlusOrphans(self): '''Test limit case where batch length is equal to size + orphans''' for bsize, length in ((12, 11), (13, 12), (14, 13), (15, 10)): b = Batch(range(bsize), size=10, start=1, end=0, orphan=3, overlap=0) assert length == b.length
def testSingle(self): '''Test single Batch''' for bsize in range(1, 6): seq = range(bsize) b = Batch(seq, 5) assert b.previous is None assert b.next is None assert b.start == 1, b.start assert len(b) == b.end == bsize assert b.sequence_length == len(seq) for i in seq: assert b[i] == i, (b[i], i) neg = -1 - i assert b[neg] == (bsize + neg), (b[neg], (bsize + neg))
from ZTUtils import Batch from Products.CMFCore.utils import getToolByInterfaceName from Products.CMFDefault.utils import decode ctool = getToolByInterfaceName(script, 'Products.CMFCore.interfaces.ICatalogTool') utool = getToolByInterfaceName(script, 'Products.CMFCore.interfaces.IURLTool') portal_url = utool() options = {} target = '%s/recent_news' % portal_url items = ctool.searchResults(portal_type='News Item', sort_on='Date', sort_order='reverse', review_state='published') batch_obj = Batch(items, 10, b_start, orphan=1) items = [{ 'creators': item.listCreators, 'date': item.Date, 'description': structured_text(item.Description), 'title': item.Title, 'url': item.getURL() } for item in batch_obj] navigation = context.getBatchNavigation(batch_obj, target) options['batch'] = {'listItemInfos': items, 'navigation': navigation} return context.recent_news_template(**decode(options, script))
'width': '80', 'colspan': None }) for column in columns: if key == column['key'] and not reverse and key != 'position': query = make_query(key=column['key'], reverse=1) else: query = make_query(key=column['key']) column['url'] = '%s?%s' % (target, query) context.filterCookie() folderfilter = context.REQUEST.get('folderfilter', '') filter = context.decodeFolderFilter(folderfilter) items = context.listFolderContents(contentFilter=filter) items = sequence.sort(items, ((key, 'cmp', reverse and 'desc' or 'asc'), )) batch_obj = Batch(items, 25, b_start, orphan=0) items = [] i = 1 for item in batch_obj: item_icon = item.getIcon(1) item_id = item.getId() item_position = key == 'position' and str(b_start + i) or '...' i += 1 item_url = item.getActionInfo( ('object/folderContents', 'object/view'))['url'] items.append({ 'checkbox': items_manage_allowed and ('cb_%s' % item_id) or '', 'icon': item_icon and ('%s/%s' % (portal_url, item_icon)) or '', 'id': item_id, 'modified': item.ModificationDate(), 'position': item_position,
def testEmpty(self): '''Test empty Batch''' b = Batch([], 5) assert b.previous is None assert b.next is None assert len(b) == b.start == b.end == 0, (len(b), b.start, b.end)
##parameters= ## from ZTUtils import Batch from Products.CMFCore.utils import getToolByInterfaceName from Products.CMFDefault.utils import decode ctool = getToolByInterfaceName('Products.CMFCore.interfaces.ICatalogTool') options = {} items = ctool.searchResults(portal_type='News Item', sort_on='Date', sort_order='reverse', review_state='published') batch_obj = Batch(items, 10, 0, orphan=1) items = [{ 'title': item.Title, 'date': item.Date, 'url': item.getURL() } for item in batch_obj] options['listItemInfos'] = items return context.news_box_template(**decode(options, script))
options['channel_info'] = { 'base': stool.getHTML4UpdateBase(context), 'description': context.Description(), 'frequency': stool.getUpdateFrequency(context), 'period': stool.getUpdatePeriod(context), 'title': context.Title(), 'url': context.absolute_url() } key, reverse = context.getDefaultSorting() items = stool.getSyndicatableContent(context) items = sequence.sort(items, ((key, 'cmp', reverse and 'desc' or 'asc'), )) items = LazyFilter(items, skip='View') b_size = stool.getMaxItems(context) batch_obj = Batch(items, b_size, 0, orphan=0) items = [] for item in batch_obj: items.append({ 'date': item.modified().HTML4(), 'description': item.Description(), 'listCreators': item.listCreators(), 'listSubjects': item.Subject(), 'publisher': item.Publisher(), 'rights': item.Rights(), 'title': item.Title(), 'url': item.absolute_url() }) options['listItemInfos'] = tuple(items) options = toUnicode(options, ptool.getProperty('default_charset', None))
def _getBatchObj(self): b_start = self._getBatchStart() items = self._get_items() return Batch(items, self._BATCH_SIZE, b_start, orphan=0)
if members_delete and \ context.validateMemberIds(**form) and \ context.setRedirect(atool, 'global/members_delete', b_start=b_start, ids=ids): return elif members_new and \ context.setRedirect(atool, 'global/members_register', b_start=b_start): return options = {} target = atool.getActionInfo('global/manage_members')['url'] members = mtool.listMembers() batch_obj = Batch(members, 25, b_start, orphan=0) items = [] for member in batch_obj: member_id = member.getId() fullname = member.getProperty('fullname') last_login = member.getProperty('login_time') never_logged_in = str(last_login).startswith('2000/01/01') member_login = never_logged_in and '---' or last_login.Date() member_home = mtool.getHomeUrl(member_id, verifyPermission=0) items.append( {'checkbox': 'cb_%s' % member_id, 'email': member.getProperty('email'), 'login': member_login, 'id': member_id, 'name': '%s (%s)' % (fullname, member_id), 'home': member_home } ) navigation = context.getBatchNavigation(batch_obj, target,