Beispiel #1
0
 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
Beispiel #2
0
    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
Beispiel #3
0
 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
Beispiel #4
0
 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))
Beispiel #5
0
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))
Beispiel #6
0
    '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,
Beispiel #7
0
 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)
Beispiel #8
0
##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))
Beispiel #9
0
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))
Beispiel #10
0
 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,