- if self.queryset_var is not None:
- try:
- 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
- pagination = registry.get_for_model(model)
- if pagination is None:
- pagination = default_pagination
- paginator = paginator_class(value, pagination)
- try:
- page_obj = paginator.page(context['request'].page)
- except:
- return u''
- context[key] = page_obj.object_list
- context['paginator'] = paginator
- context['page_obj'] = page_obj
- return u''
- except template.VariableDoesNotExist:
- pass
- for d in context:
- for key, value in d.iteritems():
- if issubclass(value.__class__, QuerySet):
- model = value.model
- pagination = registry.get_for_model(model)
- if pagination is not None:
- paginator = QuerySetPaginator(value, pagination)
- try:
- page_obj = paginator.page(context['request'].page)
- except:
- return u''
- context[key] = page_obj.object_list
- context['paginator'] = paginator
- context['page_obj'] = page_obj
- return u''
+ key = self.queryset_var.var
+ value = self.queryset_var.resolve(context)
+ if isinstance(self.paginate_by, int):
+ paginate_by = self.paginate_by
+ else:
+ paginate_by = self.paginate_by.resolve(context)
+ paginator = Paginator(value, paginate_by, self.orphans)
+ try:
+ page_obj = paginator.page(context['request'].page)
+ except InvalidPage:
+ if INVALID_PAGE_RAISES_404:
+ raise Http404('Invalid page requested. If DEBUG were set to ' +
+ 'False, an HTTP 404 page would have been shown instead.')
+ context[key] = []
+ context['invalid_page'] = True
+ return u''
+ if self.context_var is not None:
+ context[self.context_var] = page_obj.object_list
+ else:
+ context[key] = page_obj.object_list
+ context['paginator'] = paginator
+ context['page_obj'] = page_obj