From dccc33da066801b7074e9541e7fcb040c61ece76 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Fri, 19 Jan 2018 01:42:59 +0100 Subject: delete article from cache after refund --- talerblog/blog/blog.py | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) (limited to 'talerblog/blog/blog.py') diff --git a/talerblog/blog/blog.py b/talerblog/blog/blog.py index d0e0b09..7d11294 100644 --- a/talerblog/blog/blog.py +++ b/talerblog/blog/blog.py @@ -110,6 +110,12 @@ def javascript_licensing(): return flask.render_template("templates/javascript.html") +# Cache for paid articles (in the form -), so we +# don't always have to ask the backend / DB, and so we don't have to store +# variable-size cookies on the client. +paid_articles_cache = SimpleCache() + + # Triggers the refund by serving /refund/test?order_id=XY. # Will be triggered by a "refund button". @app.route("/refund/", methods=["POST"]) @@ -127,9 +133,16 @@ def refund(order_id): instance=INSTANCE, ) resp = backend_post("refund", refund_spec) - if resp.get("refund_redirect_url"): - return flask.redirect(resp["refund_redirect_url"]) - err_abort(500, message="Response from backend incomplete", json=resp) + try: + # delete from paid article cache + article_name = refund_spec["contract_terms"]["extra"]["article_name"] + session_id = flask.session.get("session_id", "") + paid_articles_cache.delete(session_id + "-" + article_name) + if resp.get("refund_redirect_url"): + return flask.redirect(resp["refund_redirect_url"]) + except KeyError: + err_abort(500, message="Response from backend incomplete", json=resp) + def render_article(article_name, data, order_id): @@ -150,12 +163,6 @@ def render_article(article_name, data, order_id): order_id=order_id) -# Cache for paid articles (in the form -), so we -# don't always have to ask the backend / DB, and so we don't have to store -# variable-size cookies on the client. -paid_articles_cache = SimpleCache() - - @app.route("/essay/") @app.route("/essay//data/") def article(article_name, data=None): @@ -196,6 +203,7 @@ def article(article_name, data=None): resource_url=flask.request.base_url, session_id=session_id, session_sig=session_sig, + extra=dict(article_name=article_name) ) pay_status = backend_get("check-payment", pay_params) -- cgit v1.2.3