def _batch_for_page(self, pagenumber): """Return a new Batch object for the given pagenumber. """ new_batch = Batch.fromPagenumber(self.batch._sequence, pagesize=self.b_size, pagenumber=pagenumber) return new_batch
def __init__(self, request, results): self.request = request self.b_start = int(self.request.form.get("b_start", 0)) self.b_size = int(self.request.form.get("b_size", DEFAULT_BATCH_SIZE)) self.batch = Batch(results, self.b_size, self.b_start)
def search(self): """ A traversable method to search for users""" query = self.request.get('q', None) page = int(self.request.get('page', 1)) pagesize = int(self.request.get('pagesize', 20)) if not query: return json.dumps({}) source = AllUsersSource(api.portal.get()) batch = Batch.fromPagenumber(items=source.search(query), pagesize=pagesize, pagenumber=page) def _term_to_dict(term): return {'_resultId': term.token, 'id': term.token, 'text': term.title and term.title or term.token} return json.dumps( { 'results': map(_term_to_dict, batch), 'total_count': len(batch), 'page': page, 'pagination': {'more': (page * pagesize) < len(batch)} } )
def search(self): """ A traversable method to search for users""" query = self.request.get('q', None) page = int(self.request.get('page', 1)) pagesize = int(self.request.get('pagesize', 20)) if not query: return json.dumps({}) source = self.get_user_source() batch = Batch.fromPagenumber(items=source.search(query), pagesize=pagesize, pagenumber=page) def _term_to_dict(term): return { '_resultId': term.token, 'id': term.token, 'text': term.title and term.title or term.token } return json.dumps({ 'results': map(_term_to_dict, batch), 'total_count': len(batch), 'page': page, 'pagination': { 'more': (page * pagesize) < len(batch) } })
def _batch_for_page(self, pagenumber): """Return a new Batch object for the given pagenumber. """ new_batch = Batch.fromPagenumber( self.batch._sequence, pagesize=self.b_size, pagenumber=pagenumber) return new_batch
def results(self, batch=True, b_start=0, b_size=None, sort_on=None, limit=None, brains=False, custom_query=None): if not b_size: b_size = self.item_count if not sort_on: sort_on = self.sort_on if not limit: limit = self.limit # Get all results collections = [ collection for collection in self.listFolderContents() if ICollection.providedBy(collection) ] uuids = set() results = [] for collection in collections: collection_results = collection.results(batch=False, b_start=0, b_size=limit, sort_on=sort_on, limit=limit, brains=brains, custom_query=custom_query) for result in collection_results: # Ensure we get each result only once if result.uuid() not in uuids: uuids.add(result.uuid()) results.append(result) # Order the results and limit it if sort_on: results.sort(key=lambda o: getattr(o, sort_on, None), reverse=self.sort_reversed) if limit: results = results[:limit] # Batch the results results = Batch(results, size=b_size, start=b_start) return results
def results(self): """ Return the list of objects stored in the tile. """ self.set_limit() uuids = self.data.get('uuids', None) results = [] if uuids: uuids = [uuids] if type(uuids) == str else uuids for uid in uuids: obj = uuidToObject(uid) if obj: results.append(obj) else: self.remove_item(uid) final_result = [] batch = Batch.fromPagenumber(items=results, pagesize=4, pagenumber=1) for num in batch.navlist: batch.pagenumber = num final_result.append(list(batch)) return final_result
def testBatchOrdered(self): for x in range(500): batch = Batch(sequence=self.ordered.objectValues(), size=SIZE / 10, start=SIZE * 4 / 5) [b for b in batch]
def testBatchRegular(self): for x in range(500): batch = Batch(sequence=self.regular.objectValues(), size=SIZE / 10, start=SIZE * 4 / 5) [b for b in batch]