def do_pagination(paginate_by, GET, object_list): if not 'page' in GET: page = 1 else: try: page = int(GET['page']) except ValueError: page = 1 paginator = Paginator(object_list, paginate_by, orphans=3) try: page_obj = paginator.page(page) except (EmptyPage, InvalidPage): page_obj = paginator.page(paginator.num_pages) if len(paginator.page_range) > 9: paginator.trunc_page_range = paginator.page_range first_in_set = page - 3 last_in_set = page + 3 paginator.trunc_low = False paginator.trunc_high = False for p in paginator.page_range: if p < first_in_set: paginator.trunc_low = True paginator.trunc_page_range.remove(p) if p > last_in_set: paginator.trunc_high = True paginator.trunc_page_range.remove(p) return page_obj, paginator