From 60c979bea4095ab9b001329f5315527df9feb34f Mon Sep 17 00:00:00 2001 From: Marcello Stanisci Date: Tue, 5 Dec 2017 20:03:59 +0100 Subject: mostly linted --- talerdonations/donations/donations.py | 113 +++++++++++++++++----------------- 1 file changed, 58 insertions(+), 55 deletions(-) (limited to 'talerdonations/donations/donations.py') diff --git a/talerdonations/donations/donations.py b/talerdonations/donations/donations.py index 9bf5afc..56a8c1e 100644 --- a/talerdonations/donations/donations.py +++ b/talerdonations/donations/donations.py @@ -15,33 +15,31 @@ # @author Florian Dold # @author Marcello Stanisci -import flask -from urllib.parse import urljoin, urlencode, quote, parse_qsl -import requests +from urllib.parse import urljoin, parse_qsl import logging import os import base64 import random -import time from datetime import datetime -import jinja2 +import requests +import flask from talerdonations.talerconfig import TalerConfig -from talerdonations.helpers import (make_url, -expect_parameter, amount_from_float, amount_to_float, -join_urlparts, get_query_string, MissingParameterException, -backend_error) +from talerdonations.helpers import (make_url, \ + expect_parameter, amount_from_float, \ + amount_to_float, join_urlparts, get_query_string, \ + MissingParameterException, backend_error) -logger = logging.getLogger(__name__) +LOGGER = logging.getLogger(__name__) -base_dir = os.path.dirname(os.path.abspath(__file__)) +BASE_DIR = os.path.dirname(os.path.abspath(__file__)) -app = flask.Flask(__name__, template_folder=base_dir) +app = flask.Flask(__name__, template_folder=BASE_DIR) app.debug = True app.secret_key = base64.b64encode(os.urandom(64)).decode('utf-8') -tc = TalerConfig.from_env() -BACKEND_URL = tc["frontends"]["backend"].value_string(required=True) -CURRENCY = tc["taler"]["currency"].value_string(required=True) +TC = TalerConfig.from_env() +BACKEND_URL = TC["frontends"]["backend"].value_string(required=True) +CURRENCY = TC["taler"]["currency"].value_string(required=True) MAX_FEE = dict(value=3, fraction=0, currency=CURRENCY) app.config.from_object(__name__) @@ -69,17 +67,19 @@ def checkout(): amount_str = expect_parameter("donation_amount") donation_receiver = expect_parameter("donation_receiver") try: - amount = float(amount_str) + float(amount_str) except ValueError: - logger.warn("Invalid amount ('%s')", amount_str) - e = flask.jsonify(error="invalid amount") - return flask.make_response(e, 400) + LOGGER.warning("Invalid amount ('%s')", amount_str) + return flask.make_response( + flask.jsonify(error="invalid amount"), + 400) display_alert = flask.request.args.get("display_alert", None) - return flask.render_template("templates/checkout.html", - donation_amount=amount_str, - donation_receiver=donation_receiver, - merchant_currency=CURRENCY, - display_alert=display_alert) + return flask.render_template( + "templates/checkout.html", + donation_amount=amount_str, + donation_receiver=donation_receiver, + merchant_currency=CURRENCY, + display_alert=display_alert) @app.route("/generate-contract", methods=["GET"]) @@ -87,13 +87,14 @@ def generate_contract(): try: donation_receiver = expect_parameter("donation_receiver") donation_amount = expect_parameter("donation_amount") - except MissingParameterException as e: - return flask.jsonify(dict(error="Missing parameter '%s'" % e)), 400 + except MissingParameterException as exc: + return flask.jsonify( + dict(error="Missing parameter '%s'" % exc)), 400 amount = amount_from_float(float(donation_amount)) order_id = "donation-%s-%X-%s" % \ (donation_receiver, - random.randint(0, 0xFFFFFFFF), - datetime.today().strftime('%H_%M_%S')) + random.randint(0, 0xFFFFFFFF), + datetime.today().strftime('%H_%M_%S')) order = dict( summary="Donation!", nonce=flask.request.args.get("nonce"), @@ -117,21 +118,22 @@ def generate_contract(): jurisdiction="none", ), ) - r = requests.post(urljoin(BACKEND_URL, 'proposal'), json=dict(order=order)) - if 200 != r.status_code: + resp = requests.post(urljoin(BACKEND_URL, 'proposal'), + json=dict(order=order)) + if resp.status_code != 200: # It is important to use 'backend_error()', as it handles # the case where the backend gives NO JSON as response. # For example, if it dies, or nginx hijacks somehow the # response. - return backend_error(r) - return flask.jsonify(r.json()), r.status_code + return backend_error(resp) + return flask.jsonify(resp.json()), resp.status_code @app.route("/donate") def donate(): donation_receiver = expect_parameter("donation_receiver") donation_amount = expect_parameter("donation_amount") payment_system = expect_parameter("payment_system") - if "taler" != payment_system: + if payment_system != "taler": return flask.redirect(make_url("checkout", ("donation_receiver", donation_receiver), ("donation_amount", donation_amount), @@ -153,12 +155,12 @@ def fulfillment(): if order_id in payed_order_ids: data = payed_order_ids[order_id] return flask.render_template( - "templates/fulfillment.html", - donation_receiver=data["donation_receiver"], - donation_amount=data["donation_amount"], - order_id=order_id, - currency=CURRENCY) - + "templates/fulfillment.html", + donation_receiver=data["donation_receiver"], + donation_amount=data["donation_amount"], + order_id=order_id, + currency=CURRENCY) + response = flask.make_response(flask.render_template("templates/fallback.html"), 402) response.headers["X-Taler-Contract-Query"] = "fulfillment_url" response.headers["X-Taler-Offer-Url"] = make_url("/") @@ -169,20 +171,21 @@ def fulfillment(): def pay(): deposit_permission = flask.request.get_json() if deposit_permission is None: - e = flask.jsonify(error="no json in body") - return e, 400 - r = requests.post(urljoin(BACKEND_URL, "pay"), json=deposit_permission) - if 200 != r.status_code: - return backend_error(r) - proposal_data = r.json()["contract_terms"] + return flask.jsonify(error="no json in body"), 400 + resp = requests.post(urljoin(BACKEND_URL, "pay"), + json=deposit_permission) + if resp.status_code != 200: + return backend_error(resp) + proposal_data = resp.json()["contract_terms"] order_id = proposal_data["order_id"] - payed_order_ids = flask.session["payed_order_ids"] = flask.session.get("payed_order_ids", {}) + payed_order_ids = flask.session["payed_order_ids"] \ + = flask.session.get("payed_order_ids", {}) payed_order_ids[order_id] = dict( donation_receiver=proposal_data["merchant"]["instance"], donation_amount=amount_to_float(proposal_data["amount"]) ) print("received payment for", order_id) - return flask.jsonify(r.json()), r.status_code + return flask.jsonify(resp.json()), resp.status_code @app.route("/backoffice") def track(): @@ -194,10 +197,10 @@ def track(): def history(): qs = get_query_string().decode("utf-8") url = urljoin(BACKEND_URL, "history") - r = requests.get(url, params=dict(parse_qsl(qs))) - if 200 != r.status_code: - return backend_error(r) - return flask.jsonify(r.json()), r.status_code + resp = requests.get(url, params=dict(parse_qsl(qs))) + if resp.status_code != 200: + return backend_error(resp) + return flask.jsonify(resp.json()), resp.status_code @app.route("/track/order") @@ -205,7 +208,7 @@ def track_order(): instance = expect_parameter("instance") order_id = expect_parameter("order_id") url = urljoin(BACKEND_URL, "track/transaction") - r = requests.get(url, params=dict(order_id=order_id, instance=instance)) - if 200 != r.status_code: - return backend_error(r) - return flask.jsonify(r.json()), r.status_code + resp = requests.get(url, params=dict(order_id=order_id, instance=instance)) + if resp.status_code != 200: + return backend_error(resp) + return flask.jsonify(resp.json()), resp.status_code -- cgit v1.2.3