From c8730857293c694449110ec289210e7ec4f32aa4 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Wed, 21 Apr 2021 21:35:55 +0200 Subject: make language and active page available in all templates --- talermerchantdemos/blog/blog.py | 21 ++++++------- talermerchantdemos/donations/donations.py | 24 ++++++++------- talermerchantdemos/landing/landing.py | 15 ++++++---- talermerchantdemos/survey/survey.py | 21 ++++++++----- talermerchantdemos/templates/common-base.html.j2 | 34 ++++++++++++++++++++-- .../templates/donations-checkout.html.j2 | 2 +- .../templates/donations-index.html.j2 | 2 +- talermerchantdemos/templates/footer.html.j2 | 10 ------- .../templates/language-switcher.html.j2 | 32 ++++++++++---------- talermerchantdemos/templates/menu.html.j2 | 22 -------------- talermerchantdemos/templates/survey-index.html.j2 | 2 +- 11 files changed, 96 insertions(+), 89 deletions(-) delete mode 100644 talermerchantdemos/templates/footer.html.j2 delete mode 100644 talermerchantdemos/templates/menu.html.j2 diff --git a/talermerchantdemos/blog/blog.py b/talermerchantdemos/blog/blog.py index e8cce32..d1a2865 100644 --- a/talermerchantdemos/blog/blog.py +++ b/talermerchantdemos/blog/blog.py @@ -50,7 +50,7 @@ def err_abort(abort_status_code, **params): @param abort_status_code status code to return along the response. @param params _kw_ arguments to passed verbatim to the templating engine. """ - t = flask.render_template("blog-error.html.j2", lang=get_locale(), **params) + t = flask.render_template("blog-error.html.j2", **params) flask.abort(flask.make_response(t, abort_status_code)) @@ -119,7 +119,13 @@ def utility_processor(): def env(name, default=None): return os.environ.get(name, default) - return dict(env=env) + def getactive(): + return "blog" + + def getlang(): + return get_locale() + + return dict(env=env, getactive=getactive, getlang=getlang) ## @@ -134,7 +140,6 @@ def internal_error(e): "blog-error.html.j2", message=gettext("Internal error"), stack=traceback.format_exc(), - lang=get_locale(), ) @@ -187,7 +192,6 @@ def start(lang): translated = {} return flask.render_template( "blog-index.html.j2", - lang=lang, merchant_currency=CURRENCY, articles=translated.values(), ) @@ -214,13 +218,11 @@ def confirm_refund(lang, order_id): return flask.render_template( "blog-error.html.j2", message=gettext("Article is not anymore refundable"), - lang=get_locale(), ) return flask.render_template( "blog-confirm-refund.html.j2", article_name=article_name, order_id=order_id, - lang=get_locale(), ) @@ -300,7 +302,6 @@ def render_article(article_name, lang, data, order_id, refundable): article_contents=article_contents, article_name=article_name, order_id=order_id, - lang=lang, refundable=refundable, ) @@ -314,7 +315,7 @@ def render_article(article_name, lang, data, order_id, refundable): def post_order(article_name, lang): order = dict( amount=ARTICLE_AMOUNT, - extra=dict(article_name=article_name, lang=lang), + extra=dict(article_name=article_name), fulfillment_url=flask.request.base_url, summary="Essay: " + article_name.replace("_", " "), # FIXME: add support for i18n of summary! @@ -400,7 +401,6 @@ def article(article_name, lang=None, data=None): "blog-article-refunded.html.j2", article_name=article_name, order_id=order_id, - lang=lang, ) response = render_article( article_name, lang, data, order_id, refundable(pay_status) @@ -438,7 +438,6 @@ def handler_500(e): return flask.render_template( "blog-error.html.j2", message=gettext("Internal server error"), - lang=get_locale(), ) @@ -447,7 +446,6 @@ def handler_404(e): return flask.render_template( "blog-error.html.j2", message=gettext("Page not found"), - lang=get_locale(), ) @@ -455,7 +453,6 @@ def handler_404(e): def handler_backend_exception(e): t = flask.render_template( "survey-error.html.j2", - lang=get_locale(), message=e.args[0], json=e.backend_json, status_code=e.backend_status, diff --git a/talermerchantdemos/donations/donations.py b/talermerchantdemos/donations/donations.py index 19f1372..85ab9ec 100644 --- a/talermerchantdemos/donations/donations.py +++ b/talermerchantdemos/donations/donations.py @@ -99,7 +99,13 @@ def utility_processor(): def env(name, default=None): return os.environ.get(name, default) - return dict(env=env) + def getactive(): + return "donations" + + def getlang(): + return get_locale() + + return dict(env=env, getlang=getlang, getactive=getactive) ## @@ -108,7 +114,7 @@ def utility_processor(): # @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("donations-error.html.j2", lang=get_locale(), **params) + t = flask.render_template("donations-error.html.j2", **params) flask.abort(flask.make_response(t, abort_status_code)) @@ -160,7 +166,6 @@ def internal_error(e): return flask.render_template( "donations-error.html.j2", message=gettext("Internal error"), - lang=get_locale(), stack=traceback.format_exc(), ) @@ -197,7 +202,7 @@ def index(): @app.route("//") def start(lang): return flask.render_template( - "donations-index.html.j2", lang=lang, merchant_currency=CURRENCY + "donations-index.html.j2", merchant_currency=CURRENCY ) @@ -217,7 +222,6 @@ def checkout(lang): donation_amount=amount, donation_receiver=donation_receiver, donation_donor=donation_donor, - lang=lang, merchant_currency=CURRENCY, ) @@ -229,7 +233,7 @@ def checkout(lang): # @return response object about the mentioned impossibility. @app.route("//provider-not-supported") def provider_not_supported(lang): - return flask.render_template("donations-provider-not-supported.html.j2", lang=lang) + return flask.render_template("donations-provider-not-supported.html.j2") ## @@ -246,11 +250,10 @@ def donate(lang): donation_donor = expect_parameter("donation_donor") payment_system = expect_parameter("payment_system") if payment_system != "taler": - return flask.redirect(flask.url_for("provider_not_supported", lang=lang)) + return flask.redirect(flask.url_for("provider_not_supported")) fulfillment_url = flask.url_for( "fulfillment", timestamp=str(time.time()), - lang=lang, receiver=donation_receiver, _external=True, ) @@ -270,7 +273,7 @@ def donate(lang): order_id = order_resp["order_id"] return flask.redirect( flask.url_for( - "fulfillment", receiver=donation_receiver, lang=lang, order_id=order_id + "fulfillment", receiver=donation_receiver, order_id=order_id ) ) @@ -298,7 +301,6 @@ def fulfillment(lang, receiver): donation_amount=extra["amount"], donation_donor=extra["donor"], order_id=order_id, - lang=lang, currency=CURRENCY, ) return flask.redirect(pay_status["order_status_url"]) @@ -307,5 +309,5 @@ def fulfillment(lang, receiver): @app.errorhandler(404) def handler(e): return flask.render_template( - "donations-error.html.j2", lang=get_locale(), message=gettext("Page not found") + "donations-error.html.j2", message=gettext("Page not found") ) diff --git a/talermerchantdemos/landing/landing.py b/talermerchantdemos/landing/landing.py index 270e205..3c1f304 100644 --- a/talermerchantdemos/landing/landing.py +++ b/talermerchantdemos/landing/landing.py @@ -82,13 +82,19 @@ def get_locale(): return lang return "en" - ## # Make the environment available into templates. # # @return the environment-reading function. @app.context_processor def utility_processor(): + + def getactive(): + return "landing" + + def getlang(): + return get_locale() + def env(name, default=None): return os.environ.get(name, default) @@ -101,7 +107,7 @@ def utility_processor(): # returns the YYYY-MM-DD date format. return timestamp.strftime("%Y-%b-%d") - return dict(env=env, prettydate=prettydate) + return dict(env=env, prettydate=prettydate, getactive=getactive, getlang=getlang) ## @@ -116,7 +122,6 @@ def internal_error(e): "landing-error.html.j2", message=gettext("Internal error"), stack=traceback.format_exc(), - lang=get_locale(), ) @@ -175,7 +180,6 @@ def start(lang): return flask.render_template( "landing-index.html.j2", merchant_currency=CURRENCY, - lang=lang, bank_url=bank_register_url, merchant_blog_url=merchant_blog_url, merchant_donations_url=merchant_donations_url, @@ -186,7 +190,7 @@ def start(lang): @app.errorhandler(404) def handler_404(e): return flask.render_template( - "landing-error.html.j2", message=gettext("Page not found"), lang=get_locale() + "landing-error.html.j2", message=gettext("Page not found") ) @@ -195,5 +199,4 @@ def handler_405(e): return flask.render_template( "landing-error.html.j2", message=gettext("HTTP method not allowed for this page"), - lang=get_locale(), ) diff --git a/talermerchantdemos/survey/survey.py b/talermerchantdemos/survey/survey.py index 4813477..1b06218 100644 --- a/talermerchantdemos/survey/survey.py +++ b/talermerchantdemos/survey/survey.py @@ -103,7 +103,13 @@ def utility_processor(): # returns the YYYY-MM-DD date format. return timestamp.strftime("%Y-%b-%d") - return dict(env=env, prettydate=prettydate) + def getactive(): + return "survey" + + def getlang(): + return get_locale() + + return dict(env=env, prettydate=prettydate, getactive=getactive, getlang=getlang) ## @@ -118,7 +124,6 @@ def internal_error(e): "survey-error.html.j2", message=gettext("Internal error"), stack=traceback.format_exc(), - lang=get_locale(), ) @@ -151,7 +156,9 @@ def submit_survey(lang): next_url=os.environ.get("TALER_ENV_URL_INTRO", "https://taler.net/"), justification="Payment methods survey", ) - backend_resp = backend_post(INSTANCED_URL, "private/tips", tip_spec, auth_token=APIKEY) + backend_resp = backend_post( + INSTANCED_URL, "private/tips", tip_spec, auth_token=APIKEY + ) return flask.redirect(backend_resp["tip_status_url"]) @@ -173,14 +180,16 @@ def index(): @app.route("//", methods=["GET"]) def start(lang): return flask.render_template( - "survey-index.html.j2", merchant_currency=CURRENCY, lang=lang + "survey-index.html.j2", + merchant_currency=CURRENCY, ) @app.errorhandler(404) def handler_404(e): return flask.render_template( - "survey-error.html.j2", message=gettext("Page not found"), lang=get_locale() + "survey-error.html.j2", + message=gettext("Page not found"), ) @@ -189,7 +198,6 @@ def handler_405(e): return flask.render_template( "survey-error.html.j2", message=gettext("HTTP method not allowed for this page"), - lang=get_locale(), ) @@ -197,7 +205,6 @@ def handler_405(e): def handler_backend_exception(e): t = flask.render_template( "survey-error.html.j2", - lang=get_locale(), message=e.args[0], json=e.backend_json, status_code=e.backend_status, diff --git a/talermerchantdemos/templates/common-base.html.j2 b/talermerchantdemos/templates/common-base.html.j2 index ff8d655..17e27c6 100644 --- a/talermerchantdemos/templates/common-base.html.j2 +++ b/talermerchantdemos/templates/common-base.html.j2 @@ -38,13 +38,43 @@ {% endblock %} - {% from 'menu.html.j2' import menu with context %} {{ menu('landing') }} + + +
{% block main %} This is the main content of the page. {% endblock %} - {% include 'footer.html.j2' %} +
+
+

+ {{ + gettext('You can learn more about GNU Taler on our main website.').format(site="https://taler.net/" + getlang() + "/") + }} +

+
+

Copyright © 2014—2020 Taler Systems SA

+
diff --git a/talermerchantdemos/templates/donations-checkout.html.j2 b/talermerchantdemos/templates/donations-checkout.html.j2 index ec63d9f..677df85 100644 --- a/talermerchantdemos/templates/donations-checkout.html.j2 +++ b/talermerchantdemos/templates/donations-checkout.html.j2 @@ -19,7 +19,7 @@ }}

-
+

diff --git a/talermerchantdemos/templates/donations-index.html.j2 b/talermerchantdemos/templates/donations-index.html.j2 index 25a6768..05e958e 100644 --- a/talermerchantdemos/templates/donations-index.html.j2 +++ b/talermerchantdemos/templates/donations-index.html.j2 @@ -17,7 +17,7 @@ }}

- +