def get_page(request, queryset, PER_PAGE): class dummy: pass try: klass=type(queryset[0]) except: klass=dummy pass kname=klass.__name__.lower() perpage = PER_PAGE[0] try: perpage = int(request.GET.get('pp', PER_PAGE[0])) except: pass if perpage not in PER_PAGE_INTS: perpage = PER_PAGE[0] paginator = Paginator(queryset, perpage, allow_empty_first_page=True) page = request.GET.get(kname + '_page', 1) try: page_number = int(page) except ValueError: if page == 'last': page_number = paginator.num_pages else: # Page is not 'last', nor can it be converted to an int. paginator.page_obj = None return paginator try: page_obj = paginator.page(page_number) except InvalidPage: paginator.page_obj = None return paginator paginator.page_obj = page_obj if request.GET.has_key('data'): paginator.search_data=True if request.GET.has_key('task'): paginator.search_task=True if request.GET.has_key('method'): paginator.search_method=True if request.GET.has_key('challenge'): paginator.search_challenge=True return paginator