Example #1
0
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