diff --git a/conservancy/news/views.py b/conservancy/news/views.py new file mode 100644 index 0000000000000000000000000000000000000000..a1533b6a1193fd135f067251fc5e60af5f8c14a9 --- /dev/null +++ b/conservancy/news/views.py @@ -0,0 +1,96 @@ +from datetime import datetime + +from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator +from django.http import HttpResponse +from django.shortcuts import render +from django.views.generic import ListView +from django.views.generic.dates import ( + DateDetailView, + DayArchiveView, + MonthArchiveView, + YearArchiveView, +) + +from ..events.models import Event +from .models import ExternalArticle, PressRelease + + +class NewsListView(ListView): + extra_context = {} + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + # context['key'] = 'value' + context.update(self.extra_context) + return context + +def listing(request, *args, **kwargs): + news_queryset = PressRelease.objects.all() + +# if (not kwargs.has_key('allow_future')) or not kwargs['allow_future']: + news_queryset = news_queryset.filter(**{'%s__lte' % kwargs['date_field']: + datetime.now()}) + + date_list = news_queryset.dates(kwargs['date_field'], 'year') + + paginate_by = kwargs.get('paginate_by', 6) # Show 6 news items per page, by default + paginator = Paginator(news_queryset, paginate_by) + + page = request.GET.get('page') + try: + news = paginator.page(page) + except PageNotAnInteger: + # If page is not an integer, deliver first page. + news = paginator.page(1) + except EmptyPage: + # If page is out of range (e.g. 9999), deliver last page of results. + news = paginator.page(paginator.num_pages) + + return render(request, 'news/pressrelease_list.html', {"news": news, "date_list" : date_list}) + +class NewsYearArchiveView(YearArchiveView): + # queryset = Article.objects.all() + # date_field = "pub_date" + make_object_list = True + allow_future = True + +# def archive_year(request, **kwargs): +# callable = NewsYearArchiveView.as_view(**kwargs) +# return callable(request) + +class NewsMonthArchiveView(MonthArchiveView): + allow_future = True + +# def archive_month(request, **kwargs): +# # return HttpResponse("archive_month") +# callable = NewsMonthArchiveView.as_view(**kwargs) +# return callable(request) + +class NewsDayArchiveView(DayArchiveView): + allow_future = True + +# def archive_day(request, **kwargs): +# # return HttpResponse("archive_day") +# callable = NewsDayArchiveView.as_view(**kwargs) +# return callable(request) + +class NewsDateDetailView(DateDetailView): + # extra_context = {} + allow_future = True + # slug_url_kwarg = 'slug' + + # def get_context_data(self, **kwargs): + # context = super(NewsDateDetailView, self).get_context_data(**kwargs) + # context.update(self.extra_context) + # return context + +# def object_detail(request, **kwargs): +# # extra_context = {} +# # extra_context['slug'] = kwargs['slug'] +# # del kwargs['slug'] +# # kwargs['extra_context'] = extra_context +# # return HttpResponse("object_detail: " + str(kwargs)) +# # slug = kwargs['slug'] +# # del kwargs['slug'] +# callable = NewsDateDetailView.as_view(**kwargs) +# return callable(request) +