diff --git a/www/conservancy/__init__.py b/www/conservancy/__init__.py index 648278312b89233be6fc9da08f2b30f24991a0a4..28f44d49592182aca58ca1bb766d3dad3087a5ea 100644 --- a/www/conservancy/__init__.py +++ b/www/conservancy/__init__.py @@ -1,6 +1,27 @@ +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 diff --git a/www/conservancy/apps/supporter/__init__.py b/www/conservancy/apps/supporter/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/www/conservancy/apps/supporter/urls.py b/www/conservancy/apps/supporter/urls.py new file mode 100644 index 0000000000000000000000000000000000000000..c5f9da3d9710ffeedd9a1e9641175a36b7e2dcae --- /dev/null +++ b/www/conservancy/apps/supporter/urls.py @@ -0,0 +1,11 @@ +from django.conf.urls import patterns + +INDEX_VIEW = 'conservancy.apps.supporter.views.index' +pattern_pairs = [(r'^/?$', INDEX_VIEW)] +pattern_pairs.extend( + (r'^{}(?:\.html|/|)$'.format(basename), INDEX_VIEW) + for basename in ['index', '2015-supporter-appeal', '2016-supporter-appeal'] +) +pattern_pairs.append((r'', 'conservancy.static.views.index')) + +urlpatterns = patterns('', *pattern_pairs) diff --git a/www/conservancy/apps/supporter/views.py b/www/conservancy/apps/supporter/views.py new file mode 100644 index 0000000000000000000000000000000000000000..cad15e8071a0db88f628cbdeebc4eb961275877b --- /dev/null +++ b/www/conservancy/apps/supporter/views.py @@ -0,0 +1,9 @@ +import conservancy + +def index(request): + partial_amount = conservancy.param_if_valid(request.GET, 'upgrade', 'upgrade_id', 0) + context = { + 'partial_amount': partial_amount, + 'minimum_amount': 120 - partial_amount, + } + return conservancy.render_template_with_context(request, "supporter/index.html", context) diff --git a/www/conservancy/static/js/supporter-page.js b/www/conservancy/static/js/supporter-page.js index 6a2ec7a66d5981b3fb62bce73a547ac6826614c2..4d8decc00cea14400f1ca809527984d4b76b097c 100644 --- a/www/conservancy/static/js/supporter-page.js +++ b/www/conservancy/static/js/supporter-page.js @@ -173,7 +173,11 @@ $(document).ready(function() { }; $window.bind("hashchange", selectSupportTypeFromHash); var $selectorLink = selectSupportTypeFromHash(); - if ($selectorLink.length === 0) { + if (parseInt($("form#annual").upgradeFromAmount) > 0) { + supportTypeSelector("#annual").click(); + $(".supporter-type-selector").hide(); + } + else if ($selectorLink.length === 0) { supportTypeSelector("#annual").click(); } diff --git a/www/conservancy/static/supporter/2015-supporter-appeal.html b/www/conservancy/static/supporter/2015-supporter-appeal.html deleted file mode 120000 index 0070a719a631bfaea43d160caf4400ff4c4e3e43..0000000000000000000000000000000000000000 --- a/www/conservancy/static/supporter/2015-supporter-appeal.html +++ /dev/null @@ -1 +0,0 @@ -2016-supporter-appeal.html \ No newline at end of file diff --git a/www/conservancy/static/supporter/index.html b/www/conservancy/static/supporter/index.html deleted file mode 120000 index 0070a719a631bfaea43d160caf4400ff4c4e3e43..0000000000000000000000000000000000000000 --- a/www/conservancy/static/supporter/index.html +++ /dev/null @@ -1 +0,0 @@ -2016-supporter-appeal.html \ No newline at end of file diff --git a/www/conservancy/static/supporter/2016-supporter-appeal.html b/www/conservancy/templates/supporter/index.html similarity index 99% rename from www/conservancy/static/supporter/2016-supporter-appeal.html rename to www/conservancy/templates/supporter/index.html index 36b53e038cd1d94e3b1ef05e50e8d16196f8434b..747eb32827a0955f0575ea035e62796b34144f24 100644 --- a/www/conservancy/static/supporter/2016-supporter-appeal.html +++ b/www/conservancy/templates/supporter/index.html @@ -61,7 +61,8 @@

Note: annual supporter is not an automatic renewal relationship. If you join today, you'll receive an email in about one year to remind you to optionally renew.

-
+
@@ -69,7 +70,7 @@ - + $120 is a minimum for Conservancy Supporters. Donate smaller amounts here.