def testGrouper(self): r = grouper(2,[1,2,3,4,5,6,7]) self.assertFalse(hasattr(r,'__len__')) self.assertEqual(list(r),[(1,2),(3,4),(5,6),(7,None)]) r = grouper(3,'abcdefg','x') self.assertFalse(hasattr(r,'__len__')) self.assertEqual(list(r),[('a','b','c'),('d','e','f'),('g','x','x')])
def testGrouper(self): r = grouper(2, [1, 2, 3, 4, 5, 6, 7]) self.assertFalse(hasattr(r, '__len__')) self.assertEqual(list(r), [(1, 2), (3, 4), (5, 6), (7, None)]) r = grouper(3, 'abcdefg', 'x') self.assertFalse(hasattr(r, '__len__')) self.assertEqual(list(r), [('a', 'b', 'c'), ('d', 'e', 'f'), ('g', 'x', 'x')])
def _index_items_from_model(self, items, model): wft = self.words_from_text add = self.add_item total = 0 for group in grouper(self.max_in_session, items): with self.session().begin() as transaction: ids = [] for item, data in self._item_data(group): ids.append(item.id) words = chain(*[wft(value) for value in data]) add(item, words, transaction) if ids: total += len(ids) self.remove_item(model, transaction, ids) yield transaction.on_result yield total
def _index_items_from_model(self, items, model): wft = self.words_from_text add = self.add_item total = 0 for group in grouper(self.max_in_session, items): with self.session().begin() as transaction: ids = [] for item, data in self._item_data(group): ids.append(item.id) words = chain(*[wft(value) for value in data]) add(item, words, transaction) if ids: total += len(ids) self.remove_item(model, transaction, ids) yield transaction.on_result yield total