mirror of
https://github.com/r4sas/py-i2phosts
synced 2025-03-10 04:11:02 +00:00
Add cool pagination templatetag
http://www.tummy.com/Community/Articles/django-pagination/
This commit is contained in:
parent
ad77aebe4f
commit
5308d0b9f5
0
pyi2phosts/postkey/templatetags/__init__.py
Normal file
0
pyi2phosts/postkey/templatetags/__init__.py
Normal file
46
pyi2phosts/postkey/templatetags/paginator.py
Normal file
46
pyi2phosts/postkey/templatetags/paginator.py
Normal file
@ -0,0 +1,46 @@
|
||||
# Based on: http://www.djangosnippets.org/snippets/73/
|
||||
#
|
||||
# Modified by Sean Reifschneider to be smarter about surrounding page
|
||||
# link context. For usage documentation see:
|
||||
#
|
||||
# http://www.tummy.com/Community/Articles/django-pagination/
|
||||
|
||||
from django import template
|
||||
|
||||
register = template.Library()
|
||||
|
||||
def paginator(context, adjacent_pages=2):
|
||||
"""
|
||||
To be used in conjunction with the object_list generic view.
|
||||
|
||||
Adds pagination context variables for use in displaying first, adjacent and
|
||||
last page links in addition to those created by the object_list generic
|
||||
view.
|
||||
|
||||
"""
|
||||
startPage = max(context['page'] - adjacent_pages, 1)
|
||||
if startPage <= 3: startPage = 1
|
||||
endPage = context['page'] + adjacent_pages + 1
|
||||
if endPage >= context['pages'] - 1: endPage = context['pages'] + 1
|
||||
page_numbers = [n for n in range(startPage, endPage) \
|
||||
if n > 0 and n <= context['pages']]
|
||||
page_obj = context['page_obj']
|
||||
paginator = context['paginator']
|
||||
|
||||
return {
|
||||
'page_obj': page_obj,
|
||||
'paginator': paginator,
|
||||
'hits': context['hits'],
|
||||
'results_per_page': context['results_per_page'],
|
||||
'page': context['page'],
|
||||
'pages': context['pages'],
|
||||
'page_numbers': page_numbers,
|
||||
'next': context['next'],
|
||||
'previous': context['previous'],
|
||||
'has_next': context['has_next'],
|
||||
'has_previous': context['has_previous'],
|
||||
'show_first': 1 not in page_numbers,
|
||||
'show_last': context['pages'] not in page_numbers,
|
||||
}
|
||||
|
||||
register.inclusion_tag('paginator.html', takes_context=True)(paginator)
|
Loading…
x
Reference in New Issue
Block a user