diff --git a/pyi2phosts/postkey/templatetags/__init__.py b/pyi2phosts/postkey/templatetags/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/pyi2phosts/postkey/templatetags/paginator.py b/pyi2phosts/postkey/templatetags/paginator.py new file mode 100644 index 0000000..298ba2e --- /dev/null +++ b/pyi2phosts/postkey/templatetags/paginator.py @@ -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)