Files @ 8716315b60c0
Branch filter:

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

Bradley M. Kuhn
Put Karen's doctorate as our featured item.

The video may not work there, but going to try it.
from builtins import str
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)
    try:
        # Junk URLs in production (Python 3.5) are causing UnicodeEncodeErrors
        # here. Can't reproduce in development in Python 3.9 - only Python 2.7.
        if not os.path.exists(fullpath):
            return handler404(request)
    except UnicodeEncodeError:
        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)