Files
@ 6b1b3b8f2ebb
Branch filter:
Location: website/www/conservancy/static/views.py - annotation
6b1b3b8f2ebb
2.1 KiB
text/x-python
static: Encode paths as UTF-8 before translating to the filesystem.
2bf594b86cb1 2bf594b86cb1 2bf594b86cb1 f8f37dd39c6b 2bf594b86cb1 39314c254e73 6b1b3b8f2ebb 39314c254e73 2bf594b86cb1 39314c254e73 39314c254e73 2bf594b86cb1 2bf594b86cb1 2bf594b86cb1 2bf594b86cb1 2bf594b86cb1 2bf594b86cb1 2bf594b86cb1 2bf594b86cb1 2bf594b86cb1 2bf594b86cb1 2bf594b86cb1 2bf594b86cb1 2bf594b86cb1 2bf594b86cb1 2bf594b86cb1 2bf594b86cb1 2bf594b86cb1 2bf594b86cb1 ab2239009a1b ab2239009a1b ab2239009a1b ab2239009a1b ab2239009a1b ab2239009a1b ab2239009a1b 09654a5eac60 2bf594b86cb1 b48b1ab1e52f 6b1b3b8f2ebb 6b1b3b8f2ebb 6b1b3b8f2ebb 6b1b3b8f2ebb 6b1b3b8f2ebb 39314c254e73 39314c254e73 6b1b3b8f2ebb 2bf594b86cb1 2bf594b86cb1 2bf594b86cb1 2bf594b86cb1 2bf594b86cb1 5c4cc1e2e114 ab2239009a1b ab2239009a1b b3f019265b24 5c4cc1e2e114 5c4cc1e2e114 ab2239009a1b ab2239009a1b b3f019265b24 2bf594b86cb1 2bf594b86cb1 2bf594b86cb1 2bf594b86cb1 2bf594b86cb1 | import os.path
from django.http import HttpResponse
from django.template import RequestContext, loader
from conservancy.apps.fundgoal.models import FundraisingGoal as FundraisingGoal
STATIC_ROOT = '/home/www/website/www/conservancy/static/'
FILESYSTEM_ENCODING = 'utf-8'
def handler(request, errorcode):
path = os.path.join('error', errorcode, 'index.html')
fullpath = os.path.join(STATIC_ROOT, path)
if not os.path.exists(fullpath):
return HttpResponse("Internal error: " + path)
template = loader.get_template(path)
context = RequestContext(request)
return HttpResponse(template.render(context))
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 fundgoal_lookup(fundraiser_sought):
try:
return FundraisingGoal.objects.get(fundraiser_code_name=fundraiser_sought)
except FundraisingGoal.DoesNotExist:
# we have no object! do something
return None
def index(request, *args, **kwargs):
# return HttpResponse("Hello, static world: " + request.get_full_path())
path = request.path
try:
path_bytes = path.encode(FILESYSTEM_ENCODING)
except UnicodeEncodeError:
# If the path can't be expressed on the filesystem, it must not exist.
return handler404(request)
if path.endswith(u'/'):
path += u'index.html'
fullpath = os.path.join(STATIC_ROOT, path_bytes)
if not os.path.exists(fullpath):
# return HttpResponse("Sorry that's a 404: " + path)
return handler404(request)
template = loader.get_template(path)
kwargs = kwargs.copy()
if kwargs.has_key('fundraiser_sought'):
kwargs['fundgoal'] = fundgoal_lookup(kwargs['fundraiser_sought'])
kwargs['sitefundgoal'] = fundgoal_lookup('supporterrun')
context = RequestContext(request, kwargs)
return HttpResponse(template.render(context))
def debug(request):
path = request.get_full_path()
path = path.lstrip('/')
return HttpResponse("Hello, static world: " + path)
|