gnunet-svn
[Top][All Lists]
Advanced

[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



reply via email to

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