From bd2723d429a609628d956d08ec02171ed63bb8a9 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Mon, 23 Jul 2018 18:34:26 +0100 Subject: [PATCH] donation: Allow to pass pre-selected arguments Signed-off-by: Michael Tremer --- src/templates/donate.html | 36 +++++++++++++++++++++++------------- src/web/handlers.py | 16 +++++++++++++++- src/web/handlers_base.py | 11 +++++++++++ 3 files changed, 49 insertions(+), 14 deletions(-) diff --git a/src/templates/donate.html b/src/templates/donate.html index 616027c7..d54bffbd 100644 --- a/src/templates/donate.html +++ b/src/templates/donate.html @@ -22,12 +22,14 @@
Choose a currency
- +
- +
@@ -36,12 +38,14 @@
Frequency
- - + +
- +
@@ -50,13 +54,13 @@
{{ _("Choose an amount") }}
- +
- {% for amount in amounts %} + {% for a in amounts %} {% end %}
@@ -67,8 +71,8 @@
- +
@@ -320,7 +324,13 @@ $(document).ready(function() { var amount = $("input[name='amount']"); - $(".USD").hide(); + // Adjust form to default currency + var currency = $("input[name='currency']:checked").val(); + if (currency == "EUR") { + $(".USD").hide(); + } else if (currency == "USD") { + $(".EUR").hide(); + } $("input[name='currency']").on("change", function() { var currency = $(this).val(); @@ -359,7 +369,7 @@ $("#donate").click(function (event) { var frequency = $("input[name='frequency']").val(); - if (frequency == "single") { + if (frequency == "one-time") { event.preventDefault(); $("#modal-upsell").modal("show"); diff --git a/src/web/handlers.py b/src/web/handlers.py index dfa05369..b7805ba1 100644 --- a/src/web/handlers.py +++ b/src/web/handlers.py @@ -62,7 +62,21 @@ class DonateHandler(BaseHandler): else: country = None - self.render("donate.html", countries=iso3166.countries, country=country) + # Get defaults + amount = self.get_argument_int("amount", None) + currency = self.get_argument("currency", None) + frequency = self.get_argument("frequency", None) + + # Set default currency + if not currency in ("EUR", "USD"): + currency = "EUR" + + # Set default frequency + if not frequency in ("one-time", "monthly"): + frequency = "one-time" + + self.render("donate.html", countries=iso3166.countries, + country=country, amount=amount, currency=currency, frequency=frequency) @tornado.gen.coroutine def post(self): diff --git a/src/web/handlers_base.py b/src/web/handlers_base.py index 13b0fe5c..2dd0b66b 100644 --- a/src/web/handlers_base.py +++ b/src/web/handlers_base.py @@ -62,6 +62,17 @@ class BaseHandler(tornado.web.RequestHandler): return self.__remote_location + def get_argument_int(self, *args, **kwargs): + arg = self.get_argument(*args, **kwargs) + + if arg is None or arg == "": + return + + try: + return int(arg) + except ValueError: + raise tornado.web.HTTPError(400) + def get_argument_date(self, arg, *args, **kwargs): value = self.get_argument(arg, *args, **kwargs) if value is None: -- 2.47.3