def category(self): category_id = self.request.matchdict['category'] category = self.get_category(category_id) if category is None or category.language != self.locale: raise HTTPNotFound() pages = self.get_pages_for_category(category_id, self.locale) p = int(self.request.GET.get('p', 0)) empty_defaults = { 'paginator': [], 'category': category, 'p': p, } if not category: return empty_defaults if len(pages) == 0: return empty_defaults paginator = EGPaginator(pages, p, results_per_page=self.results_per_page) # requested page number is out of range total_pages = paginator.total_pages() # sets the floor to 0 p = p if p >= 0 else 0 # sets the roof to `total_pages -1` p = p if p < total_pages else total_pages - 1 paginator = EGPaginator(pages, p, results_per_page=self.results_per_page) return { 'paginator': paginator, 'category': category, 'p': p, 'pages': pages, }
def search(self): query = self.request.GET.get('q') p = int(self.request.GET.get('p', 0)) empty_defaults = { 'paginator': [], 'query': query, 'p': p, } # handle query exception if not query: return empty_defaults all_results = self.workspace.S(Page).query( content__query_string=query).filter(language=self.locale) # no results found if all_results.count() == 0: return empty_defaults paginator = EGPaginator(all_results, p) # requested page number is out of range total_pages = paginator.total_pages() # sets the floor to 0 p = p if p >= 0 else 0 # sets the roof to `total_pages -1` p = p if p < total_pages else total_pages - 1 paginator = EGPaginator(all_results, p) return { 'paginator': paginator, 'query': query, 'p': p, }
def category(self): category_id = self.request.matchdict['category'] category = self.get_category(category_id) if category is None or category.language != self.locale: raise HTTPNotFound() pages = self.get_pages_for_category(category_id, self.locale) p = int(self.request.GET.get('p', 0)) empty_defaults = { 'paginator': [], 'category': category, 'p': p, } if not category: return empty_defaults if len(pages) == 0: return empty_defaults paginator = EGPaginator( pages, p, results_per_page=self.results_per_page) # requested page number is out of range total_pages = paginator.total_pages() # sets the floor to 0 p = p if p >= 0 else 0 # sets the roof to `total_pages -1` p = p if p < total_pages else total_pages - 1 paginator = EGPaginator( pages, p, results_per_page=self.results_per_page) return { 'paginator': paginator, 'category': category, 'p': p, 'pages': pages, }