def get_html_context(self): base_url = self.request.build_absolute_uri() current = _divide_with_ceil(self.offset, self.limit) + 1 # The number of pages is a little bit fiddly. # We need to sum both the number of pages from current offset to end # plus the number of pages up to the current offset. # When offset is not strictly divisible by the limit then we may # end up introducing an extra page as an artifact. final = ( _divide_with_ceil(self.count - self.offset, self.limit) + _divide_with_ceil(self.offset, self.limit) ) def page_number_to_url(page_number): if page_number == 1: return remove_query_param(base_url, self.offset_query_param) else: offset = self.offset + ((page_number - current) * self.limit) return replace_query_param(base_url, self.offset_query_param, offset) page_numbers = _get_displayed_page_numbers(current, final) page_links = _get_page_links(page_numbers, current, page_number_to_url) return { 'previous_url': self.get_previous_link(), 'next_url': self.get_next_link(), 'page_links': page_links }
def get_html_context(self): base_url = self.request.build_absolute_uri() def page_number_to_url(page_number): if page_number == 1: return remove_query_param(base_url, self.page_query_param) else: return replace_query_param(base_url, self.page_query_param, page_number) if hasattr(self.page, 'number'): current = self.page.number final = self.page.paginator.num_pages page_numbers = _get_displayed_page_numbers(current, final) page_links = _get_page_links(page_numbers, current, page_number_to_url) return { 'previous_url': self.get_previous_link(), 'next_url': self.get_next_link(), 'page_links': page_links } else: return { 'previous_url': '', 'next_url': '', 'page_links': '' }
def get_page_info(self): current = self.page.number page_numbers = _get_displayed_page_numbers( current, self.page.paginator.num_pages) page_links = _get_page_links(page_numbers, current, self.page_number_to_url) return [{ 'number': number, 'link': link.url } for number, link in zip(page_numbers, page_links)]
def get_paginated_response(self, data): base_url = self.request.get_full_path() def page_number_to_url(pnum): return replace_query_param(base_url, self.page_query_param, pnum) current = self.page.number final = self.page.paginator.num_pages page_numbers = _get_displayed_page_numbers(current, final) page_links = _get_page_links(page_numbers, current, page_number_to_url) return Response( OrderedDict([("page_links", page_links), ("results", data)]))
def get_page_links(request, page, page_query_param='page'): base_url = request.build_absolute_uri() def page_number_to_url(page_number): if page_number == 1: return remove_query_param(base_url, page_query_param) else: return replace_query_param(base_url, page_query_param, page_number) current = page.number final = page.paginator.num_pages page_numbers = _get_displayed_page_numbers(current, final) return _get_page_links(page_numbers, current, page_number_to_url)
def get_paginated_response(self, data): current = self.page.number page_numbers = _get_displayed_page_numbers( current, self.page.paginator.num_pages) page_links = _get_page_links(page_numbers, current, self.page_number_to_url) return Response({ 'pages_info': [{ 'number': number, 'link': link.url } for number, link in zip(page_numbers, page_links)], 'articles': data, })
def get_paginated_response(self, data): base_url = self.request.build_absolute_uri() def page_number_to_url(page_number): if page_number == 1: return remove_query_param(base_url, self.page_query_param) else: return replace_query_param(base_url, self.page_query_param, page_number) response = {} if ps.INCLUDE_COUNT: response[ps.LABEL_COUNT] = self.page.paginator.count if ps.INCLUDE_NEXT: response[ps.LABEL_NEXT] = self.get_next_link() if ps.INCLUDE_PREVIOUS: response[ps.LABEL_PREVIOUS] = self.get_previous_link() if ps.INCLUDE_NEXT_PAGE_NUMBER: response[ps.LABEL_NEXT_PAGE_NUMBER] = ( self.page.next_page_number() if self.page.has_next() else None) if ps.INCLUDE_PREVIOUS_PAGE_NUMBER: response[ps.LABEL_PREVIOUS_PAGE_NUMBER] = ( self.page.previous_page_number() if self.page.has_previous() else None) if ps.INCLUDE_PAGE_SIZE: response[ps.LABEL_PAGE_SIZE] = self.get_page_size(self.request) if ps.INCLUDE_RESULTS: response[ps.LABEL_RESULTS] = data if ps.INCLUDE_PAGE_LINKS: current = self.page.number final = self.page.paginator.num_pages page_numbers = _get_displayed_page_numbers(current, final) page_links = _get_page_links(page_numbers, current, page_number_to_url) response[ps.LABEL_PAGE_LINKS] = page_links if ps.INCLUDE_CURRENT_PAGE_NUMBER: response[ps.LABEL_CURRENT_PAGE_NUMBER] = self.page.number return Response(response)
def get_html_context(self): base_url = self.request.build_absolute_uri() def page_number_to_url(page_number): if page_number == 1: return remove_query_param(base_url, self.page_query_param) else: return replace_query_param(base_url, self.page_query_param, page_number) current = self.page.number final = self.page.paginator.num_pages page_numbers = _get_displayed_page_numbers(current, final) page_links = _get_page_links(page_numbers, current, page_number_to_url) return { 'previous_url': self.get_previous_link(), 'next_url': self.get_next_link(), 'page_links': page_links }
def get_html_context(self): base_url = self.request.build_absolute_uri() if self.limit: current = _divide_with_ceil(self.offset, self.limit) + 1 # The number of pages is a little bit fiddly. # We need to sum both the number of pages from current offset to end # plus the number of pages up to the current offset. # When offset is not strictly divisible by the limit then we may # end up introducing an extra page as an artifact. final = ( _divide_with_ceil(self.count - self.offset, self.limit) + _divide_with_ceil(self.offset, self.limit) ) if final < 1: final = 1 else: current = 1 final = 1 if current > final: current = final def page_number_to_url(page_number): if page_number == 1: return remove_query_param(base_url, self.offset_query_param) else: offset = self.offset + ((page_number - current) * self.limit) return replace_query_param(base_url, self.offset_query_param, offset) page_numbers = _get_displayed_page_numbers(current, final) page_links = _get_page_links(page_numbers, current, page_number_to_url) return { 'previous_url': self.get_previous_link(), 'next_url': self.get_next_link(), 'page_links': page_links }
def get_paginated_response(self, data): base_url = self.request.build_absolute_uri() def page_number_to_url(page_number): if page_number == 1: return remove_query_param(base_url, self.page_query_param) else: return replace_query_param(base_url, self.page_query_param, page_number) current = self.page.number final = self.page.paginator.num_pages page_numbers = _get_displayed_page_numbers(current, final) page_links = _get_page_links(page_numbers, current, page_number_to_url) return Response( OrderedDict([ ('count', self.page.paginator.count), ('next', self.get_next_link()), ('previous', self.get_previous_link()), ('page_links', page_links), ('results', data), ]))