From cdc81e51888ca067b8bd254918dd8dfd1302b1e2 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Tue, 20 Apr 2021 16:52:01 +0200 Subject: formatting and method de-duplication --- talermerchantdemos/httpcommon/__init__.py | 50 ++++++++------------- talermerchantdemos/landing/landing.py | 74 +++++++++++++++++++------------ 2 files changed, 64 insertions(+), 60 deletions(-) diff --git a/talermerchantdemos/httpcommon/__init__.py b/talermerchantdemos/httpcommon/__init__.py index 650228d..443160b 100644 --- a/talermerchantdemos/httpcommon/__init__.py +++ b/talermerchantdemos/httpcommon/__init__.py @@ -6,15 +6,6 @@ from datetime import datetime import time from flask_babel import gettext -## -# Return a error response to the client. -# -# @param abort_status_code status code to return along the response. -# @param params _kw_ arguments to passed verbatim to the templating engine. -def err_abort(abort_status_code, **params): - t = flask.render_template("templates/error.html", **params) - flask.abort(flask.make_response(t, abort_status_code)) - ## # POST a request to the backend, and return a error # response if any error occurs. @@ -28,9 +19,7 @@ def backend_post(backend_url, endpoint, json): final_url = urljoin(backend_url, endpoint) print("POSTing to: " + final_url) try: - resp = requests.post( - final_url, json=json, headers=headers - ) + resp = requests.post(final_url, json=json, headers=headers) except requests.ConnectionError: err_abort(500, message=gettext("Could not establish connection to backend")) try: @@ -39,14 +28,14 @@ def backend_post(backend_url, endpoint, json): err_abort( 500, message=gettext("Could not parse response from backend"), - status_code=resp.status_code + status_code=resp.status_code, ) if resp.status_code != 200: err_abort( 500, message=gettext("Backend returned error status"), json=response_json, - status_code=resp.status_code + status_code=resp.status_code, ) print("Backend responds to {}: {}".format(final_url, str(response_json))) return response_json @@ -64,9 +53,7 @@ def backend_get(backend_url, endpoint, params): final_url = urljoin(backend_url, endpoint) print("GETting: " + final_url + " with params: " + str(params)) try: - resp = requests.get( - final_url, params=params, headers=headers - ) + resp = requests.get(final_url, params=params, headers=headers) except requests.ConnectionError: err_abort(500, message=gettext("Could not establish connection to backend")) try: @@ -78,19 +65,21 @@ def backend_get(backend_url, endpoint, params): 500, message=gettext("Backend returned error status"), json=response_json, - status_code=resp.status_code + status_code=resp.status_code, ) print("Backend responds to {}: {}".format(final_url, str(response_json))) return response_json + def get_locale(): - parts = request.path.split('/', 2) - if (2 >= len(parts)): + parts = request.path.split("/", 2) + if 2 >= len(parts): # Totally unexpected path format, do not localize return "en" lang = parts[1] return lang + ## # Helper function used inside Jinja2 logic to create a links # to the current page but in a different language. Used to @@ -102,8 +91,8 @@ def self_localized(lang): """ path = request.path # path must have the form "/$LANG/$STUFF" - parts = path.split('/', 2) - if (2 >= len(parts)): + parts = path.split("/", 2) + if 2 >= len(parts): # Totally unexpected path format, do not localize return path return "/" + lang + "/" + parts[2] @@ -115,30 +104,27 @@ def self_localized(lang): # @param abort_status_code status code to return along the response. # @param params _kw_ arguments to passed verbatim to the templating engine. def err_abort(abort_status_code, **params): - t = flask.render_template( - "templates/error.html.j2", - lang=get_locale(), - **params - ) + t = flask.render_template("templates/error.html.j2", lang=get_locale(), **params) flask.abort(flask.make_response(t, abort_status_code)) - def fallback_404(error): return "Page not found" - class Deadline: def __init__(self, value): self.value = value + def isExpired(self): if self.value == "never": return False now = int(round(time.time()) * 1000) now_dt = datetime.fromtimestamp(now / 1000) deadline_dt = datetime.fromtimestamp(self.value / 1000) - print("debug: checking refund expiration, now: {}, deadline: {}".format( - now_dt.strftime("%c"), deadline_dt.strftime("%c") - )) + print( + "debug: checking refund expiration, now: {}, deadline: {}".format( + now_dt.strftime("%c"), deadline_dt.strftime("%c") + ) + ) return now > self.value diff --git a/talermerchantdemos/landing/landing.py b/talermerchantdemos/landing/landing.py index 170a950..071a44e 100644 --- a/talermerchantdemos/landing/landing.py +++ b/talermerchantdemos/landing/landing.py @@ -35,13 +35,17 @@ import sys if not sys.version_info.major == 3 and sys.version_info.minor >= 6: print("Python 3.6 or higher is required.") - print("You are using Python {}.{}.".format(sys.version_info.major, sys.version_info.minor)) + print( + "You are using Python {}.{}.".format( + sys.version_info.major, sys.version_info.minor + ) + ) sys.exit(1) BASE_DIR = os.path.dirname(os.path.abspath(__file__)) app = flask.Flask(__name__, template_folder=BASE_DIR) app.debug = True -app.secret_key = base64.b64encode(os.urandom(64)).decode('utf-8') +app.secret_key = base64.b64encode(os.urandom(64)).decode("utf-8") LOGGER = logging.getLogger(__name__) TC = TalerConfig.from_env() @@ -56,18 +60,21 @@ except ConfigurationError as ce: app.config.from_object(__name__) babel = Babel(app) -LOGGER.info("Using translations from:" + ':'.join(list(babel.translation_directories))) +LOGGER.info("Using translations from:" + ":".join(list(babel.translation_directories))) translations = [str(translation) for translation in babel.list_translations()] -if not 'en' in translations: - translations.append('en') -LOGGER.info("Operating with the following translations available: " + ' '.join(translations)) +if not "en" in translations: + translations.append("en") +LOGGER.info( + "Operating with the following translations available: " + " ".join(translations) +) app.jinja_env.globals.update(self_localized=self_localized) + @babel.localeselector def get_locale(): - parts = request.path.split('/', 2) - if (2 >= len(parts)): + parts = request.path.split("/", 2) + if 2 >= len(parts): # Totally unexpected path format, do not localize return "en" lang = parts[1] @@ -75,6 +82,7 @@ def get_locale(): return lang return "en" + ## # Make the environment available into templates. # @@ -108,20 +116,21 @@ def internal_error(e): "templates/error.html.j2", message=gettext("Internal error"), stack=traceback.format_exc(), - lang=get_locale() + lang=get_locale(), ) + ## # Serve the /favicon.ico requests. # # @return the favicon.ico file. @app.route("/favicon.ico") def favicon(): - LOGGER.info("will look into: " + os.path.join(app.root_path, 'static')) + LOGGER.info("will look into: " + os.path.join(app.root_path, "static")) return flask.send_from_directory( - os.path.join(app.root_path, 'static'), + os.path.join(app.root_path, "static"), "favicon.ico", - mimetype="image/vnd.microsoft.ico" + mimetype="image/vnd.microsoft.ico", ) @@ -131,10 +140,11 @@ def favicon(): # @return response object of the index page. @app.route("/") def index(): - default = 'en' + default = "en" target = flask.request.accept_languages.best_match(translations, default) return flask.redirect("/" + target + "/", code=302) + ## # Serve the internationalized main index page. # @@ -142,17 +152,25 @@ def index(): @app.route("//", methods=["GET"]) def start(lang): - if x:= os.environ.get("TALER_ENV_URL_BANK"): bank_register_url = "/".join([x.strip("/"), f"{lang}/register"]) - else: bank_register_url = "#" + if x := os.environ.get("TALER_ENV_URL_BANK"): + bank_register_url = "/".join([x.strip("/"), f"{lang}/register"]) + else: + bank_register_url = "#" - if x:= os.environ.get("TALER_ENV_URL_MERCHANT_BLOG"): merchant_blog_url = "/".join([x.strip("/"), lang]) - else: merchant_blog_url = "#" + if x := os.environ.get("TALER_ENV_URL_MERCHANT_BLOG"): + merchant_blog_url = "/".join([x.strip("/"), lang]) + else: + merchant_blog_url = "#" - if x:= os.environ.get("TALER_ENV_URL_MERCHANT_DONATIONS"): merchant_donations_url = "/".join([x.strip("/"), lang]) - else: merchant_donations_url = "#" + if x := os.environ.get("TALER_ENV_URL_MERCHANT_DONATIONS"): + merchant_donations_url = "/".join([x.strip("/"), lang]) + else: + merchant_donations_url = "#" - if x:= os.environ.get("TALER_ENV_URL_MERCHANT_SURVEY"): merchant_survey_url = "/".join([x.strip("/"), lang]) - else: merchant_survey_url = "#" + if x := os.environ.get("TALER_ENV_URL_MERCHANT_SURVEY"): + merchant_survey_url = "/".join([x.strip("/"), lang]) + else: + merchant_survey_url = "#" return flask.render_template( "templates/index.html.j2", @@ -161,21 +179,21 @@ def start(lang): bank_url=bank_register_url, merchant_blog_url=merchant_blog_url, merchant_donations_url=merchant_donations_url, - merchant_survey_url=merchant_survey_url + merchant_survey_url=merchant_survey_url, ) + @app.errorhandler(404) -def handler(e): +def handler_404(e): return flask.render_template( - "templates/error.html.j2", - message=gettext("Page not found"), - lang=get_locale() + "templates/error.html.j2", message=gettext("Page not found"), lang=get_locale() ) + @app.errorhandler(405) -def handler(e): +def handler_405(e): return flask.render_template( "templates/error.html.j2", message=gettext("HTTP method not allowed for this page"), - lang=get_locale() + lang=get_locale(), ) -- cgit v1.2.3