Ben Sturmfels
26ff31bb78
The existing jQuery UI-based fundraising progress bar used a float layout, making it hard to adapt for mobile use. Given that there is not interactivity, I've dropped all the JS and switched to a flexbox layout. This works well because the bar will stretch to fit the text rather than always maintaining its scale.
57 lines
1.8 KiB
Python
57 lines
1.8 KiB
Python
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'
|
|
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)
|
|
fullpath = os.path.join(STATIC_ROOT, path_bytes)
|
|
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)
|