From: Brian Rosner Date: Tue, 13 Apr 2010 00:13:12 +0000 (-0600) Subject: Merge remote branch 'ericflo/master' X-Git-Tag: 1.0.6~1 X-Git-Url: https://git.mdrn.pl/django-pagination.git/commitdiff_plain/1b2fd7370fc75d55c77f6d9f96a2df2d6d06953b?hp=31936260684c310d306b3989d89fa793a385918a Merge remote branch 'ericflo/master' --- diff --git a/pagination/templates/pagination/pagination.html b/pagination/templates/pagination/pagination.html index 37cef40..d5a94b8 100644 --- a/pagination/templates/pagination/pagination.html +++ b/pagination/templates/pagination/pagination.html @@ -11,7 +11,7 @@ {% ifequal page page_obj.number %} {{ page }} {% else %} - {{ page }} + {{ page }} {% endifequal %} {% else %} ... diff --git a/pagination/templatetags/pagination_tags.py b/pagination/templatetags/pagination_tags.py index 3733434..fa8fd48 100644 --- a/pagination/templatetags/pagination_tags.py +++ b/pagination/templatetags/pagination_tags.py @@ -104,7 +104,7 @@ class AutoPaginateNode(template.Node): context['page_obj'] = page_obj return u'' -def paginate(context, window=DEFAULT_WINDOW): +def paginate(context, window=DEFAULT_WINDOW, hashtag=None): """ Renders the ``pagination/pagination.html`` template, resulting in a Digg-like display of the available pages, given the current page. If there @@ -133,6 +133,11 @@ def paginate(context, window=DEFAULT_WINDOW): paginator = context['paginator'] page_obj = context['page_obj'] page_range = paginator.page_range + # Calculate the record range in the current page for display. + records = {'first': 1 + (page_obj.number - 1) * paginator.per_page} + records['last'] = records['first'] + paginator.per_page - 1 + if records['last'] + paginator.orphans >= paginator.count: + records['last'] = paginator.count # First and last are simply the first *n* pages and the last *n* pages, # where *n* is the current window size. first = set(page_range[:window]) @@ -201,8 +206,10 @@ def paginate(context, window=DEFAULT_WINDOW): to_return = { 'MEDIA_URL': settings.MEDIA_URL, 'pages': pages, + 'records': records, 'page_obj': page_obj, 'paginator': paginator, + 'hashtag': hashtag, 'is_paginated': paginator.count > paginator.per_page, } if 'request' in context: diff --git a/pagination/tests.py b/pagination/tests.py index a55ef49..31b3301 100644 --- a/pagination/tests.py +++ b/pagination/tests.py @@ -4,8 +4,22 @@ >>> from django.template import Template, Context >>> p = Paginator(range(15), 2) ->>> paginate({'paginator': p, 'page_obj': p.page(1)})['pages'] +>>> pg = paginate({'paginator': p, 'page_obj': p.page(1)}) +>>> pg['pages'] +[1, 2, 3, 4, 5, 6, 7, 8] +>>> pg['records']['first'] +1 +>>> pg['records']['last'] +2 + +>>> p = Paginator(range(15), 2) +>>> pg = paginate({'paginator': p, 'page_obj': p.page(8)}) +>>> pg['pages'] [1, 2, 3, 4, 5, 6, 7, 8] +>>> pg['records']['first'] +15 +>>> pg['records']['last'] +15 >>> p = Paginator(range(17), 2) >>> paginate({'paginator': p, 'page_obj': p.page(1)})['pages'] @@ -25,8 +39,22 @@ [1, 2] >>> p = Paginator(range(21), 2, 1) ->>> paginate({'paginator': p, 'page_obj': p.page(1)})['pages'] +>>> pg = paginate({'paginator': p, 'page_obj': p.page(1)}) +>>> pg['pages'] [1, 2, 3, 4, None, 7, 8, 9, 10] +>>> pg['records']['first'] +1 +>>> pg['records']['last'] +2 + +>>> p = Paginator(range(21), 2, 1) +>>> pg = paginate({'paginator': p, 'page_obj': p.page(10)}) +>>> pg['pages'] +[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] +>>> pg['records']['first'] +19 +>>> pg['records']['last'] +21 >>> t = Template("{% load pagination_tags %}{% autopaginate var 2 %}{% paginate %}") @@ -127,4 +155,4 @@ True >>> request = WSGIRequest({'REQUEST_METHOD': 'POST', 'CONTENT_TYPE': 'multipart', 'wsgi.input': StringIO()}) >>> middleware.process_request(request) >>> request.upload_handlers.append('asdf') -""" \ No newline at end of file +"""