Files @ 9b48cc94e651
Branch filter:

Location: website/www/conservancy/static/views.py - annotation

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.
import mimetypes
import os.path
from django.http import HttpResponse
from django.template.response import TemplateResponse

from conservancy.local_context_processors import fundgoal_lookup

STATIC_ROOT = os.path.abspath(os.path.dirname(__file__))
FILESYSTEM_ENCODING = 'utf-8'

def handler(request, errorcode):
    path = os.path.join('error', str(errorcode), 'index.html')
    fullpath = os.path.join(STATIC_ROOT, path)
    if not os.path.exists(fullpath):
        return HttpResponse("Internal error: " + path, status=int(errorcode))
    else:
        return TemplateResponse(request, path, status=int(errorcode))

def handler401(request):
    return handler(request, 401)

def handler403(request):
    return handler(request, 403)

def handler404(request):
    return handler(request, 404)

def handler500(request):
    return handler(request, 500)

def index(request, *args, **kwargs):
    path = request.path.lstrip(u'/')
    if path.endswith(u'/'):
        path += u'index.html'
    fullpath = os.path.join(STATIC_ROOT, path)
    if not os.path.exists(fullpath):
        return handler404(request)
    content_type, _ = mimetypes.guess_type(path)
    if content_type != 'text/html':
        return HttpResponse(open(fullpath, 'rb'), content_type)
    else:
        context = kwargs.copy()
        try:
            context['fundgoal'] = fundgoal_lookup(kwargs['fundraiser_sought'])
        except KeyError:
            pass
        return TemplateResponse(request, path, context)

def debug(request):
    path = request.get_full_path()
    path = path.lstrip('/')
    return HttpResponse("Hello, static world: " + path)