summaryrefslogtreecommitdiff
path: root/talermerchantdemos/survey
diff options
context:
space:
mode:
Diffstat (limited to 'talermerchantdemos/survey')
-rw-r--r--talermerchantdemos/survey/__init__.py3
l---------talermerchantdemos/survey/static1
-rw-r--r--talermerchantdemos/survey/survey.py181
-rw-r--r--talermerchantdemos/survey/templates/base.html.j248
-rw-r--r--talermerchantdemos/survey/templates/error.html.j224
l---------talermerchantdemos/survey/templates/footer.html.j21
-rw-r--r--talermerchantdemos/survey/templates/index.html.j226
l---------talermerchantdemos/survey/templates/language-switcher.html.j21
l---------talermerchantdemos/survey/templates/menu.html.j21
l---------talermerchantdemos/survey/translations1
10 files changed, 0 insertions, 287 deletions
diff --git a/talermerchantdemos/survey/__init__.py b/talermerchantdemos/survey/__init__.py
deleted file mode 100644
index 2b22f3a..0000000
--- a/talermerchantdemos/survey/__init__.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from talermerchantdemos.survey.survey import app
-
-__all__ = ["app"]
diff --git a/talermerchantdemos/survey/static b/talermerchantdemos/survey/static
deleted file mode 120000
index d9bc54d..0000000
--- a/talermerchantdemos/survey/static
+++ /dev/null
@@ -1 +0,0 @@
-../static/ \ No newline at end of file
diff --git a/talermerchantdemos/survey/survey.py b/talermerchantdemos/survey/survey.py
deleted file mode 100644
index 871b417..0000000
--- a/talermerchantdemos/survey/survey.py
+++ /dev/null
@@ -1,181 +0,0 @@
-##
-# This file is part of GNU TALER.
-# Copyright (C) 2017, 2020 Taler Systems SA
-#
-# TALER is free software; you can redistribute it and/or modify it under the
-# terms of the GNU Lesser General Public License as published by the Free Software
-# Foundation; either version 2.1, or (at your option) any later version.
-#
-# TALER is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public License along with
-# GNU TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
-#
-# @author Marcello Stanisci
-# @brief Minimal Website to tip users who fill the survey.
-
-import os
-import re
-import datetime
-import base64
-import logging
-from urllib.parse import urljoin
-import flask
-from flask import request
-from flask_babel import Babel
-from flask_babel import refresh
-from flask_babel import force_locale
-from flask_babel import gettext
-import traceback
-from taler.util.talerconfig import TalerConfig, ConfigurationError
-from ..httpcommon import backend_get, backend_post, self_localized
-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))
- 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')
-
-LOGGER = logging.getLogger(__name__)
-TC = TalerConfig.from_env()
-try:
- BACKEND_URL = TC["frontends"]["backend"].value_string(required=True)
- CURRENCY = TC["taler"]["currency"].value_string(required=True)
- APIKEY = TC["frontends"]["backend_apikey"].value_string(required=True)
-except ConfigurationError as ce:
- print(ce)
- exit(1)
-
-app.config.from_object(__name__)
-babel = Babel(app)
-INSTANCED_URL = urljoin(BACKEND_URL, f"instances/survey/")
-
-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))
-
-app.jinja_env.globals.update(self_localized=self_localized)
-
-@babel.localeselector
-def get_locale():
- parts = request.path.split('/', 2)
- if (2 >= len(parts)):
- # Totally unexpected path format, do not localize
- return "en"
- lang = parts[1]
- if lang in translations:
- return lang
- return "en"
-
-##
-# Make the environment available into templates.
-#
-# @return the environment-reading function.
-@app.context_processor
-def utility_processor():
- def env(name, default=None):
- return os.environ.get(name, default)
-
- def prettydate(talerdate):
- parsed_time = re.search(r"/Date\(([0-9]+)\)/", talerdate)
- if not parsed_time:
- return "malformed date given"
- parsed_time = int(parsed_time.group(1))
- timestamp = datetime.datetime.fromtimestamp(parsed_time)
- # returns the YYYY-MM-DD date format.
- return timestamp.strftime("%Y-%b-%d")
-
- return dict(env=env, prettydate=prettydate)
-
-
-##
-# Exception handler to capture all the unmanaged errors.
-#
-# @param e the Exception object, currently unused.
-# @return flask-native response object carrying the error message
-# (and execution stack!).
-@app.errorhandler(Exception)
-def internal_error(e):
- return flask.render_template(
- "templates/error.html.j2",
- message=gettext("Internal error"),
- stack=traceback.format_exc(),
- 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'))
- return flask.send_from_directory(
- os.path.join(app.root_path, 'static'),
- "favicon.ico",
- mimetype="image/vnd.microsoft.ico"
- )
-
-
-##
-# Tell the backend to 'authorize' a tip; this means that
-# the backend will allocate a certain amount to be later
-# picked up by the wallet.
-#
-# @return the URL where to redirect the browser, in order
-# for the wallet to pick the tip up, or a error page
-# otherwise.
-@app.route("/<lang>/submit-survey", methods=["POST"])
-def submit_survey(lang):
- tip_spec = dict(
- amount=CURRENCY + ":1.0",
- 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)
- return flask.redirect(backend_resp["tip_status_url"])
-
-##
-# Serve the main index page, redirecting to /<lang>/
-#
-# @return response object of the index page.
-@app.route("/")
-def index():
- default = 'en'
- target = flask.request.accept_languages.best_match(translations, default)
- return flask.redirect("/" + target + "/", code=302)
-
-##
-# Serve the internationalized main index page.
-#
-# @return response object of the index page.
-@app.route("/<lang>/", methods=["GET"])
-def start(lang):
- return flask.render_template(
- "templates/index.html.j2", merchant_currency=CURRENCY, lang=lang
- )
-
-@app.errorhandler(404)
-def handler(e):
- return flask.render_template(
- "templates/error.html.j2",
- message=gettext("Page not found"),
- lang=get_locale()
- )
-
-@app.errorhandler(405)
-def handler(e):
- return flask.render_template(
- "templates/error.html.j2",
- message=gettext("HTTP method not allowed for this page"),
- lang=get_locale()
- )
diff --git a/talermerchantdemos/survey/templates/base.html.j2 b/talermerchantdemos/survey/templates/base.html.j2
deleted file mode 100644
index 734da6f..0000000
--- a/talermerchantdemos/survey/templates/base.html.j2
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE html>
-<!--
- This file is part of GNU TALER.
- Copyright (C) 2014, 2015, 2016, 2020 Taler Systems SA
-
- TALER is free software; you can redistribute it and/or modify it under the
- terms of the GNU Lesser General Public License as published by the Free Software
- Foundation; either version 2.1, or (at your option) any later version.
-
- TALER is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
- A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public License along with
- TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
--->
-
-<html data-taler-nojs="true">
-<head>
- <title>{{ gettext("GNU Taler Demo: Survey") }}</title>
- <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='pure.css') }}" />
- <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='demo.css') }}" />
- <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='navbar.css') }}" />
- <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='torsten.css') }}" />
- {% block styles %}{% endblock %}
- {% block scripts %}{% endblock %}
-</head>
-
-<body>
- <header class="demobar" style="display: flex; flex-direction: column;">
- <h1><span class="tt adorn-brackets">{{ gettext("Taler Demo") }}</span><br/>
- <span class="it"><a href="{{ env('TALER_ENV_URL_MERCHANT_SURVEY') }}">{{ gettext("Survey") }}</a></span></h1>
- <p>{{
- gettext("This page demonstrates how to tip visitors for completing small tasks.") + "<br>" +
- gettext("Tipping is a way for offer cash rewards that go directly into a user's wallet.")
- }}
- </p>
- </header>
- {% from 'templates/menu.html.j2' import menu with context %} {{ menu('survey') }}
-
- <section id="main" class="content">
- {% block main %}
- This is the main content of the page.
- {% endblock %}
- {% include 'templates/footer.html.j2' %}
- </section>
-</body>
-</html>
diff --git a/talermerchantdemos/survey/templates/error.html.j2 b/talermerchantdemos/survey/templates/error.html.j2
deleted file mode 100644
index 844da08..0000000
--- a/talermerchantdemos/survey/templates/error.html.j2
+++ /dev/null
@@ -1,24 +0,0 @@
-{% extends "templates/base.html.j2" %}
-{% block main %}
- <h1>{{ gettext("Error encountered") }}</h1>
-
- <p>{{ message }}</p>
-
- {% if status_code %}
- <p>
- {{ gettext ("The backend returned status code {code}.").format(code=status_code) }}
- </p>
- {% endif %}
-
- {% if json %}
- <p>{{gettext("Backend response:")}}</p>
- <pre>{{ json }}</pre>
- {% endif %}
-
- {% if stack %}
- <p>{{gettext("Stack trace:")}}</p>
- <pre>
- {{ stack }}
- </pre>
- {% endif %}
-{% endblock main %}
diff --git a/talermerchantdemos/survey/templates/footer.html.j2 b/talermerchantdemos/survey/templates/footer.html.j2
deleted file mode 120000
index 028b093..0000000
--- a/talermerchantdemos/survey/templates/footer.html.j2
+++ /dev/null
@@ -1 +0,0 @@
-../../templates/footer.html.j2 \ No newline at end of file
diff --git a/talermerchantdemos/survey/templates/index.html.j2 b/talermerchantdemos/survey/templates/index.html.j2
deleted file mode 100644
index 7c449da..0000000
--- a/talermerchantdemos/survey/templates/index.html.j2
+++ /dev/null
@@ -1,26 +0,0 @@
-{% extends "templates/base.html.j2" %}
-{% block main %}
- <div>
- <p>
- {{
- gettext("Please participate in our survey about payment systems and receive a tip in return.")
- }}
- </p>
- </div>
- <div>
- <form action="{{ "/" + lang + "/submit-survey" }}" method="post" class="pure-form pure-form-stacked">
- <legend>{{ gettext("Which payment system do you prefer?") }}</legend>
- <fieldset>
- <label for="option-taler">
- <input id="option-taler" type="radio" name="paypref" value="taler" checked="checked" />
- Taler
- </label>
- <label for="option-visa">
- <input id="option-visa" type="radio" name="paypref" value="visa" />
- Visa
- </label>
- </fieldset>
- <input type="submit" value="{{ gettext("Submit Survey")}}" class="pure-button pure-button-primary" />
- </form>
- </div>
-{% endblock %}
diff --git a/talermerchantdemos/survey/templates/language-switcher.html.j2 b/talermerchantdemos/survey/templates/language-switcher.html.j2
deleted file mode 120000
index 6423c5c..0000000
--- a/talermerchantdemos/survey/templates/language-switcher.html.j2
+++ /dev/null
@@ -1 +0,0 @@
-../../templates/language-switcher.html.j2 \ No newline at end of file
diff --git a/talermerchantdemos/survey/templates/menu.html.j2 b/talermerchantdemos/survey/templates/menu.html.j2
deleted file mode 120000
index b9575ea..0000000
--- a/talermerchantdemos/survey/templates/menu.html.j2
+++ /dev/null
@@ -1 +0,0 @@
-../../templates/menu.html.j2 \ No newline at end of file
diff --git a/talermerchantdemos/survey/translations b/talermerchantdemos/survey/translations
deleted file mode 120000
index 0a951f7..0000000
--- a/talermerchantdemos/survey/translations
+++ /dev/null
@@ -1 +0,0 @@
-../../translations/ \ No newline at end of file