[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] [taler-merchant-frontends] branch master updated: add refun
From: |
gnunet |
Subject: |
[GNUnet-SVN] [taler-merchant-frontends] branch master updated: add refund button + polishing |
Date: |
Thu, 22 Jun 2017 16:45:43 +0200 |
This is an automated email from the git hooks/post-receive script.
marcello pushed a commit to branch master
in repository merchant-frontends.
The following commit(s) were added to refs/heads/master by this push:
new 46d89d1 add refund button + polishing
46d89d1 is described below
commit 46d89d136d80668d2e57c95359fb59c9458b9346
Author: Marcello Stanisci <address@hidden>
AuthorDate: Thu Jun 22 16:45:50 2017 +0200
add refund button + polishing
---
talerfrontends/blog/blog.py | 28 +++++++++++++++++-------
talerfrontends/blog/templates/article_frame.html | 4 ++++
talerfrontends/helpers.py | 1 +
3 files changed, 25 insertions(+), 8 deletions(-)
diff --git a/talerfrontends/blog/blog.py b/talerfrontends/blog/blog.py
index dedf6c4..09fbf01 100644
--- a/talerfrontends/blog/blog.py
+++ b/talerfrontends/blog/blog.py
@@ -51,7 +51,7 @@ tc = TalerConfig.from_env()
BACKEND_URL = tc["frontends"]["backend"].value_string(required=True)
CURRENCY = tc["taler"]["currency"].value_string(required=True)
INSTANCE = tc["blog"]["instance"].value_string(required=True)
-ARTICLE_AMOUNT = dict(value=0, fraction=10000000, currency=CURRENCY)
+ARTICLE_AMOUNT = dict(value=1, fraction=0, currency=CURRENCY)
app.config.from_object(__name__)
@@ -78,14 +78,20 @@ def javascript_licensing():
# Triggers the refund by serving /refund/test?order_id=XY.
# Will be triggered by a "refund button".
address@hidden("/refund/test", methods=["GET", "POST"])
address@hidden("/refund", methods=["GET", "POST"])
def refund():
# In production, will fetch this value from the state
- order_id = expect_parameter("order_id", 0)
- assert(order_id != 0)
if flask.request.method == "POST":
+ payed_articles = flask.session["payed_articles"] =
flask.session.get("payed_articles", {})
+ article_name = flask.request.form.get("article_name")
+ if not article_name:
+ return flask.jsonify(dict(error="No article_name found in form")),
400
+ logger.info("Looking for %s to refund" % article_name)
+ order_id = payed_articles.get(article_name)
+ if not order_id:
+ return flask.jsonify(dict(error="Aborting refund: article not
payed")), 401
r = requests.post(urljoin(BACKEND_URL, "refund"),
json=dict(order_id=order_id,
refund=dict(value=1, fraction=0,
currency=CURRENCY),
@@ -94,10 +100,14 @@ def refund():
if 200 != r.status_code:
return backend_error(r)
response = flask.make_response()
- response.headers["X-Taler-Refund-Url"] = make_url("/refund/test",
("order_id", order_id))
+ response.headers["X-Taler-Refund-Url"] = make_url("/refund",
("order_id", order_id))
return response
else:
+ order_id = expect_parameter("order_id", False)
+ if not order_id:
+ logger.error("Missing parameter 'order_id'")
+ return flask.jsonify(dict(error="Missing parameter 'order_id'")),
400
r = requests.get(urljoin(BACKEND_URL, "refund"),
params=dict(order_id=order_id,
instance=INSTANCE))
if 200 != r.status_code:
@@ -158,7 +168,8 @@ def article(name, data=None):
else:
return "permission denied", 400
return flask.render_template("templates/article_frame.html",
- article_file=get_article_file(article))
+ article_file=get_article_file(article),
+ article_name=name)
contract_url = make_url("/generate-contract", ("article_name",name))
response =
flask.make_response(flask.render_template("templates/fallback.html"), 402)
@@ -172,7 +183,7 @@ def article(name, data=None):
def pay():
deposit_permission = flask.request.get_json()
if deposit_permission is None:
- e = flask.jsonify(error="no json in body")
+ e = flask.jsonify(error="no json in body"),
return e, 400
r = requests.post(urljoin(BACKEND_URL, "pay"), json=deposit_permission)
if 200 != r.status_code:
@@ -182,8 +193,9 @@ def pay():
payed_articles = flask.session["payed_articles"] =
flask.session.get("payed_articles", {})
if not deposit_permission["order_id"]:
logger.error("order_id missing from deposit_permission!")
- return flask.jsonify(dict(error="internal error: ask for refund!"))
+ return flask.jsonify(dict(error="internal error: ask for refund!")),
500
if article_name not in payed_articles:
+ logger.info("Article %s goes in state" % article_name)
payed_articles[article_name] = deposit_permission["order_id"]
return flask.jsonify(r.json()), 200
diff --git a/talerfrontends/blog/templates/article_frame.html
b/talerfrontends/blog/templates/article_frame.html
index a2193d7..50d58e2 100644
--- a/talerfrontends/blog/templates/article_frame.html
+++ b/talerfrontends/blog/templates/article_frame.html
@@ -1,4 +1,8 @@
{% extends "templates/base.html" %}
{% block main %}
{% include "articles/" + article_file %}
+ <form action="/refund" method="POST">
+ <input type="text" name="article_name" value={{ article_name}} hidden>
+ <input type="submit" value="Ask refund!">
+ </form>
{% endblock main %}
diff --git a/talerfrontends/helpers.py b/talerfrontends/helpers.py
index 7adcfbc..5b717c7 100644
--- a/talerfrontends/helpers.py
+++ b/talerfrontends/helpers.py
@@ -81,6 +81,7 @@ def make_url(page, *query_params):
def expect_parameter(name, alt=None):
value = request.args.get(name, None)
if value is None and alt is None:
+ logger.error("Missing parameter '%s'." % name)
return flask.jsonify(error="Missing parameter '%s'." % name), 400
return value if value else alt
--
To stop receiving notification emails like this one, please contact
address@hidden
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] [taler-merchant-frontends] branch master updated: add refund button + polishing,
gnunet <=