Latest Version: 0.9.6.2
/Users/bbangert/Programming/Python/WebHelpers/webhelpers/pagination/links.py
0001"""Pagination Link Generators"""
0002from webhelpers.htmlgen import html
0003
0004def pagelist(page):
0005    """PHPbb style Pagination Links
0006    
0007    This returns HTML source to be included into a page. The html is generated
0008    with htmlgen
0009    """
0010    paginator = page.paginator
0011
0012    first_page = paginator[0]
0013    first_window = first_page.window(padding=3)
0014
0015    page_window = page.window(padding=1)
0016
0017    last_page = paginator[-1]
0018    last_window = last_page.window(padding=3)
0019
0020    first_past_page = first_window.last >= page_window.first
0021    page_past_last = page_window.last >= last_window.first
0022
0023    def combine_pages(page_list):
0024        seen = {}
0025        result = []
0026        for page in page_list:
0027            if page in seen: continue
0028            seen[page] = 1
0029            result.append(page)
0030        return result
0031
0032    if first_past_page:
0033        if page_past_last:
0034            display = first_window.pages
0035        else:
0036            first_window.last = page_window.last
0037            display = (first_window.pages + [None] + last_window.pages)
0038    else:
0039        if page_past_last:
0040            page_window.last = last_window.last
0041            display = (first_window.pages + [None] + page_window.pages)
0042        else:
0043            display = (first_window.pages + [None] + page_window.pages + [None]
0044                    + last_window.pages)
0045
0046    pager_c = []
0047    for i in display:
0048        if i is None:
0049            pager_c.append(html.span(c='...'))
0050        elif i == page:
0051            pager_c.append(html.span(c=[i]))
0052        else:
0053            pager_c.append(html.a(href=i, c=[i]))
0054
0055    pager = html.div(class_='pager', c=pager_c)
0056
0057    return pager

Top