summaryrefslogtreecommitdiff
path: root/talerdonations/donations
diff options
context:
space:
mode:
authorMarcello Stanisci <stanisci.m@gmail.com>2017-12-05 20:03:59 +0100
committerMarcello Stanisci <stanisci.m@gmail.com>2017-12-05 20:03:59 +0100
commit60c979bea4095ab9b001329f5315527df9feb34f (patch)
tree8e5f77f168118a2311a62579842073e603bd2fe6 /talerdonations/donations
parente09980a81737db071f7b3a11980f330225a797ac (diff)
downloaddonations-60c979bea4095ab9b001329f5315527df9feb34f.tar.gz
donations-60c979bea4095ab9b001329f5315527df9feb34f.tar.bz2
donations-60c979bea4095ab9b001329f5315527df9feb34f.zip
mostly linted
Diffstat (limited to 'talerdonations/donations')
-rw-r--r--talerdonations/donations/donations.py113
1 files changed, 58 insertions, 55 deletions
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