def _get_products_keyboard(self, func: Callable, products: Iterable[Product], offset: int, back_offset: int, max_offset: int, is_need_back: bool = None, *args) -> KB: if is_need_back is None: is_need_back = True kb = KB(self._serializer) for index, product in enumerate(products): if index >= IN_PAGE: break kb.button(product.name, self.open_product, (product.id, back_offset)) if is_need_back: pager = kb.pager(func, IN_PAGE, offset, max_offset, back_offset, *args) else: pager = kb.pager(func, IN_PAGE, offset, max_offset, *args) if pager is not None and is_need_back: pager.back(self.open_categories, back_offset) return kb
def _abs_open_categories(self, func: Callable, categories: Iterable[Category], offset: int, max_offset: int) -> KB: kb = KB(self._serializer) for category in categories: kb.button(category.name, func, (0, category.id, offset)) kb.pager(self.open_categories, IN_PAGE, offset, max_offset) return kb