diff --git a/www/conservancy/apps/news/views.py b/www/conservancy/apps/news/views.py new file mode 100644 index 0000000000000000000000000000000000000000..a78fbb309191967860468309f853f1020ff49291 --- /dev/null +++ b/www/conservancy/apps/news/views.py @@ -0,0 +1,35 @@ +from django.views.generic.list_detail import object_list +from sflc.apps.news.models import ExternalArticle +from sflc.apps.events.models import Event +from datetime import datetime + +def custom_index(request, queryset, *args, **kwargs): + """News index. Calls a generic list view, but passes additional + context including past and future events, and an index of news by + year. + """ + + articles = None + #if not request.GET.has_key("page"): + # articles = ExternalArticle.public.all().order_by("-date")[:10] + + if (not kwargs.has_key('allow_future')) or not kwargs['allow_future']: + queryset = queryset.filter(**{'%s__lte' % kwargs['date_field']: + datetime.now()}) + + future_events = Event.future.all().filter(date_tentative=False).order_by("date") + past_events = Event.past.all().order_by("-date")[:6] + + date_list = queryset.dates(kwargs['date_field'], 'year') + + kwargs = dict(kwargs, extra_context={'articles': articles, + 'date_list': date_list, + 'future_events': future_events, + 'past_events': past_events}) + del kwargs['date_field'] + + return object_list(request, queryset, *args, **kwargs) + +# num_navigation = 3 # in each direction +# page_navigation = range(max((page - num_navigation), 1), +# min((page + num_navigation), page_count) + 1)