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