diff --git a/www/conservancy/apps/news/views.py b/www/conservancy/apps/news/views.py index fdef8175d4e3ba3de0dec217923725fe3d5b03b8..dec05a1d0cbbd16f779dba94eca176ab2bcc25a3 100644 --- a/www/conservancy/apps/news/views.py +++ b/www/conservancy/apps/news/views.py @@ -1,6 +1,7 @@ # from django.views.generic.list_detail import object_list from django.views.generic import ListView from django.views.generic.dates import YearArchiveView, MonthArchiveView, DayArchiveView, DateDetailView +from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from conservancy.apps.news.models import ExternalArticle from conservancy.apps.events.models import Event from datetime import datetime @@ -41,18 +42,35 @@ def custom_index(request, queryset, *args, **kwargs): date_list = queryset.dates(kwargs['date_field'], 'year') + paginate_by = kwargs.get('paginate_by', 6) + paginator = Paginator(queryset, paginate_by) + page = request.GET.get('page') + try: + p = paginator.page(page) + except PageNotAnInteger: + # If page is not an integer, deliver first page. + p = paginator.page(1) + page = 1 + except EmptyPage: + # If page is out of range (e.g. 9999), deliver last page of results. + p = paginator.page(paginator.num_pages) + page = paginator.num_pages kwargs = dict(kwargs, extra_context={'articles': articles, 'date_list': date_list, 'future_events': future_events, 'past_events': past_events, - 'page': 1}) + # 'paginator': paginator, + 'page': page, + # 'is_paginated': True, + # 'num_pages': paginator.num_pages + }) del kwargs['date_field'] - + kwargs['queryset'] = queryset + # return object_list(request, queryset, *args, **kwargs) # callable = NewsListView.as_view(queryset=queryset, # extra_context=kwargs, # paginate_by=kwargs['paginate_by']) - kwargs['queryset'] = queryset callable = NewsListView.as_view(**kwargs) return callable(request)