website/www/conservancy/__init__.py
Brett Smith 6fe13959a3 supporter: Support donors upgrading to supporters.
With a valid URL, a past donor can upgrade to a supporter by donating
the rest of the amount.  Django validates the data and, if it passes,
puts it in the form.  The JavaScript does most of the work from there.
2016-12-02 12:50:21 -05:00

27 lines
928 B
Python

import hashlib
from django.conf import settings
from django.shortcuts import render_to_response
from django.template import RequestContext
HASH_ENCODING = 'utf-8'
def render_template_with_context(request, template_path, context_dict):
return render_to_response(template_path, context_dict,
context_instance=RequestContext(request))
def param_if_valid(params, param_name, hash_param_name, default=None):
try:
seed = settings.CONSERVANCY_SECRET_KEY
param_value = params[param_name]
param_bytes = param_value.encode(HASH_ENCODING)
given_hash = params[hash_param_name]
except (AttributeError, KeyError, UnicodeEncodeError):
return default
good_hash = hashlib.sha256()
good_hash.update(seed)
good_hash.update(param_bytes)
if given_hash == unicode(good_hash.hexdigest()):
return param_value
else:
return default