~netlandish/django-pagination

86ca39161a9328513387c858fa33cf332080005f — floguy 16 years ago 9a75cd9
Dropped support for the deprecated QuerySetPaginator, and also fixed an issue with lazy loading of non-QuerySet iterables.  Thanks, Ben Firshman, for the patch!  This fixes issue #15.

git-svn-id: https://django-pagination.googlecode.com/svn/trunk@27 7f1efe38-554e-0410-b69d-834cb44da2d5
1 files changed, 6 insertions(+), 23 deletions(-)

M pagination/templatetags/pagination_tags.py
M pagination/templatetags/pagination_tags.py => pagination/templatetags/pagination_tags.py +6 -23
@@ 4,7 4,7 @@ except NameError:
    from sets import Set as set
from django import template
from django.db.models.query import QuerySet
from django.core.paginator import Paginator, QuerySetPaginator, InvalidPage
from django.core.paginator import Paginator, InvalidPage
from django.conf import settings

register = template.Library()


@@ 43,16 43,9 @@ class AutoPaginateNode(template.Node):
    """
    Emits the required objects to allow for Digg-style pagination.
    
    First, it looks in the current context for the variable specified.  This
    should be either a QuerySet or a list.
    
    1. If it is a QuerySet, this ``AutoPaginateNode`` will emit a 
       ``QuerySetPaginator`` and the current page object into the context names
       ``paginator`` and ``page_obj``, respectively.
    
    2. If it is a list, this ``AutoPaginateNode`` will emit a simple
       ``Paginator`` and the current page object into the context names 
       ``paginator`` and ``page_obj``, respectively.
    First, it looks in the current context for the variable specified, and using
    that object, it emits a simple ``Paginator`` and the current page object 
    into the context names ``paginator`` and ``page_obj``, respectively.
    
    It will then replace the variable specified with only the objects for the
    current page.


@@ 61,7 54,7 @@ class AutoPaginateNode(template.Node):
        
        It is recommended to use *{% paginate %}* after using the autopaginate
        tag.  If you choose not to use *{% paginate %}*, make sure to display the
        list of availabale pages, or else the application may seem to be buggy.
        list of available pages, or else the application may seem to be buggy.
    """
    def __init__(self, queryset_var, paginate_by=DEFAULT_PAGINATION, orphans=DEFAULT_ORPHANS):
        self.queryset_var = template.Variable(queryset_var)


@@ 71,17 64,7 @@ class AutoPaginateNode(template.Node):
    def render(self, context):
        key = self.queryset_var.var
        value = self.queryset_var.resolve(context)
        if issubclass(value.__class__, QuerySet):
            model = value.model
            paginator_class = QuerySetPaginator
        else:
            value = list(value)
            try:
                model = value[0].__class__
            except IndexError:
                return u''
            paginator_class = Paginator
        paginator = paginator_class(value, self.paginate_by, self.orphans)
        paginator = Paginator(value, self.paginate_by, self.orphans)
        try:
            page_obj = paginator.page(context['request'].page)
        except InvalidPage: