gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-taler-merchant-demos] branch master updated (c37c10e -> a80b6a5)


From: gnunet
Subject: [taler-taler-merchant-demos] branch master updated (c37c10e -> a80b6a5)
Date: Wed, 02 Nov 2022 11:21:05 +0100

This is an automated email from the git hooks/post-receive script.

ms pushed a change to branch master
in repository taler-merchant-demos.

    from c37c10e  drop /demobank/default from landing link
     new 106f4ef  fix unsupported payment page
     new a80b6a5  i18n

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 talermerchantdemos/blog/blog.py           | 10 ++++++++++
 talermerchantdemos/donations/donations.py | 12 +++++++++++-
 talermerchantdemos/httpcommon/__init__.py |  9 +++++++++
 talermerchantdemos/landing/landing.py     | 10 +++++++++-
 talermerchantdemos/survey/survey.py       |  9 +++++++++
 5 files changed, 48 insertions(+), 2 deletions(-)

diff --git a/talermerchantdemos/blog/blog.py b/talermerchantdemos/blog/blog.py
index 90ef3b9..263c7cf 100644
--- a/talermerchantdemos/blog/blog.py
+++ b/talermerchantdemos/blog/blog.py
@@ -164,6 +164,16 @@ def favicon():
 # @return response object of the index page.
 @app.route("/<lang>/")
 def start(lang):
+
+    # get_locale defaults to english, hence the
+    # condition below happens only when lang is
+    # wrong or unsupported, respond 404.
+    if lang != get_locale():
+        err_abort(
+            404,
+            message="Language {} not found".format(lang),
+        )
+
     if lang in ARTICLES:
         translated = ARTICLES[lang]
     else:
diff --git a/talermerchantdemos/donations/donations.py 
b/talermerchantdemos/donations/donations.py
index eb84044..ea7138b 100644
--- a/talermerchantdemos/donations/donations.py
+++ b/talermerchantdemos/donations/donations.py
@@ -175,6 +175,16 @@ def index():
 # @return response object of the index page.
 @app.route("/<lang>/")
 def start(lang):
+
+    # get_locale defaults to english, hence the
+    # condition below happens only when lang is
+    # wrong or unsupported, respond 404.
+    if lang != get_locale():
+        err_abort(
+            404,
+            message=f"Language {lang} not found",
+        )
+
     return flask.render_template(
         "donations-index.html.j2", 
         page_title=gettext("GNU Taler Demo: Donations"),
@@ -230,7 +240,7 @@ 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"))
+        return flask.redirect(flask.url_for("provider_not_supported", 
lang=lang))
     fulfillment_url = flask.url_for(
         "fulfillment",
         timestamp=str(time.time()),
diff --git a/talermerchantdemos/httpcommon/__init__.py 
b/talermerchantdemos/httpcommon/__init__.py
index 0b76111..56cfeda 100644
--- a/talermerchantdemos/httpcommon/__init__.py
+++ b/talermerchantdemos/httpcommon/__init__.py
@@ -5,6 +5,7 @@ from flask import request, url_for
 from datetime import datetime
 import time
 from flask_babel import gettext
+import babel # used for lang sanity check
 import os
 import re
 import logging
@@ -99,6 +100,14 @@ def get_locale():
         # Totally unexpected path format, do not localize
         return "en"
     lang = parts[1]
+
+    # Sanity check on the language code.
+    try:
+        babel.core.Locale.parse(lang)
+    except Exception as err:
+        # Not a locale, default to english.
+        LOGGER.error(f"language {lang} did not parse, default to english")
+        return "en"
     if lang == "static":
         # Static resource, not a language indicator.
         # Do not localize then.
diff --git a/talermerchantdemos/landing/landing.py 
b/talermerchantdemos/landing/landing.py
index b5142d6..23d11e8 100644
--- a/talermerchantdemos/landing/landing.py
+++ b/talermerchantdemos/landing/landing.py
@@ -23,6 +23,7 @@ import base64
 import logging
 import flask
 import uwsgi
+import werkzeug
 from flask import request, url_for
 from flask_babel import Babel
 from flask_babel import refresh
@@ -128,6 +129,12 @@ def index():
 @app.route("/<lang>/", methods=["GET"])
 def start(lang):
 
+    # get_locale defaults to english, hence the
+    # condition below happens only when lang is
+    # wrong or unsupported, respond 404.
+    if lang != get_locale():
+        raise werkzeug.exceptions.NotFound()
+
     if x := os.environ.get("TALER_ENV_URL_BANK"):
         bank_url = "/".join([x.strip("/"), f"?lang={lang}"])
         bank_register_url = bank_url
@@ -162,7 +169,8 @@ def start(lang):
     )
 
 
-@app.errorhandler(404)
+@app.errorhandler(404) # How to trigger this?
+@app.errorhandler(werkzeug.exceptions.NotFound)
 def handler_404(e):
     return flask.render_template(
         "landing-error.html.j2", 
diff --git a/talermerchantdemos/survey/survey.py 
b/talermerchantdemos/survey/survey.py
index fbdbf25..1f0fffb 100644
--- a/talermerchantdemos/survey/survey.py
+++ b/talermerchantdemos/survey/survey.py
@@ -22,6 +22,7 @@ import datetime
 import base64
 import uwsgi
 import logging
+import werkzeug
 from urllib.parse import urljoin
 import flask
 from flask import request
@@ -159,6 +160,13 @@ def index():
 @app.route("/<lang>/", methods=["GET"])
 def start(lang):
     LOGGER.info("Serving main page.  Currency: {}".format(CURRENCY))
+
+    # get_locale defaults to english, hence the
+    # condition below happens only when lang is
+    # wrong or unsupported, respond 404.
+    if lang != get_locale():
+        raise werkzeug.exceptions.NotFound()
+
     return flask.render_template(
         "survey-index.html.j2",
         page_title=gettext("GNU Taler Demo: Survey"),
@@ -167,6 +175,7 @@ def start(lang):
 
 
 @app.errorhandler(404)
+@app.errorhandler(werkzeug.exceptions.NotFound)
 def handler_404(e):
     return flask.render_template(
         "survey-error.html.j2",

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]