Files @ 9b48cc94e651
Branch filter:

Location: website/www/conservancy/apps/news/views.py

Bradley M. Kuhn
Continuing saga of the sizing chart problems for original shirts

Gildan removed the sizing chart entirely from their website again
after yet another redesign. Originally, we deep-linked into files in
their CDN for the charts, but it appears that in 5c72071 that I
introduced cut-and-paste error on the sizing charts. I cannot find
the original links, but finally I simply decided we'd mirror the
files in our CDN, which is where these now link to.

I suspect that I didn't do this to start for worrying about copyright
infringement, but upon second thought, I think it's very reasonably
fair use for us to distribute these images. We bought a lot of
t-shirts from Gildan and just trying to sell through.
# from django.views.generic.list_detail import object_list
from django.views.generic import ListView
from django.shortcuts import render
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.news.models import PressRelease
from conservancy.apps.events.models import Event
from datetime import datetime
# for debugging...
from django.http import HttpResponse


class NewsListView(ListView):
    extra_context = {}
    def get_context_data(self, **kwargs):
        context = super(NewsListView, self).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)