summaryrefslogtreecommitdiff
path: root/talerdonations/helpers.py
diff options
context:
space:
mode:
Diffstat (limited to 'talerdonations/helpers.py')
-rw-r--r--talerdonations/helpers.py59
1 files changed, 28 insertions, 31 deletions
diff --git a/talerdonations/helpers.py b/talerdonations/helpers.py
index 257192d..614e463 100644
--- a/talerdonations/helpers.py
+++ b/talerdonations/helpers.py
@@ -15,22 +15,18 @@
# @author Florian Dold
# @author Marcello Stanisci
-from flask import request, jsonify, make_response, current_app, render_template
-import flask
from urllib.parse import urljoin, urlencode
import logging
-import requests
-import re
-import datetime
import json
+import flask
from .talerconfig import TalerConfig
-logger = logging.getLogger(__name__)
+LOGGER = logging.getLogger(__name__)
-tc = TalerConfig.from_env()
-BACKEND_URL = tc["frontends"]["backend"].value_string(required=True)
-NDIGITS = tc["frontends"]["NDIGITS"].value_int()
-CURRENCY = tc["taler"]["CURRENCY"].value_string()
+TC = TalerConfig.from_env()
+BACKEND_URL = TC["frontends"]["backend"].value_string(required=True)
+NDIGITS = TC["frontends"]["NDIGITS"].value_int()
+CURRENCY = TC["taler"]["CURRENCY"].value_string()
FRACTION_BASE = 1e8
@@ -40,29 +36,30 @@ if not NDIGITS:
class MissingParameterException(Exception):
def __init__(self, param):
self.param = param
+ super().__init__()
def amount_to_float(amount):
return amount['value'] + (float(amount['fraction']) / float(FRACTION_BASE))
-def amount_from_float(x):
- value = int(x)
- fraction = int((x - value) * FRACTION_BASE)
+def amount_from_float(floatx):
+ value = int(floatx)
+ fraction = int((floatx - value) * FRACTION_BASE)
return dict(currency=CURRENCY, value=value, fraction=fraction)
def join_urlparts(*parts):
- s = ""
- i = 0
- while i < len(parts):
- n = parts[i]
- i += 1
- if s.endswith("/"):
- n = n.lstrip("/")
- elif s and not n.startswith("/"):
- n = "/" + n
- s += n
- return s
+ ret = ""
+ part = 0
+ while part < len(parts):
+ buf = parts[part]
+ part += 1
+ if ret.endswith("/"):
+ buf = buf.lstrip("/")
+ elif ret and not buf.startswith("/"):
+ buf = "/" + buf
+ ret += buf
+ return ret
def make_url(page, *query_params):
@@ -72,10 +69,10 @@ def make_url(page, *query_params):
"""
query = urlencode(query_params)
if page.startswith("/"):
- root = request.url_root
+ root = flask.request.url_root
page = page.lstrip("/")
else:
- root = request.base_url
+ root = flask.request.base_url
url = urljoin(root, "%s?%s" % (page, query))
# urlencode is overly eager with quoting, the wallet right now
# needs some characters unquoted.
@@ -83,22 +80,22 @@ def make_url(page, *query_params):
def expect_parameter(name, alt=None):
- value = request.args.get(name, None)
+ value = flask.request.args.get(name, None)
if value is None and alt is None:
- logger.error("Missing parameter '%s' from '%s'." % (name, request.args))
+ LOGGER.error("Missing parameter '%s' from '%s'." % (name, flask.request.args))
raise MissingParameterException(name)
return value if value else alt
def get_query_string():
- return request.query_string
+ return flask.request.query_string
def backend_error(requests_response):
- logger.error("Backend error: status code: "
+ LOGGER.error("Backend error: status code: "
+ str(requests_response.status_code))
try:
return flask.jsonify(requests_response.json()), requests_response.status_code
except json.decoder.JSONDecodeError:
- logger.error("Backend error (NO JSON returned): status code: "
+ LOGGER.error("Backend error (NO JSON returned): status code: "
+ str(requests_response.status_code))
return flask.jsonify(dict(error="Backend died, no JSON got from it")), 502