From 3dfc2b71eb6a7e0746fe8794854f739c3305587b Mon Sep 17 00:00:00 2001 From: Robin Sonnabend <robin@fsmpi.rwth-aachen.de> Date: Tue, 27 Mar 2018 18:04:02 +0200 Subject: [PATCH] Add back.py to common web modules --- back.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 back.py diff --git a/back.py b/back.py new file mode 100644 index 0000000..8afa00b --- /dev/null +++ b/back.py @@ -0,0 +1,35 @@ +# This snippet is in public domain. +# However, please retain this link in your sources: +# http://flask.pocoo.org/snippets/120/ +# Danya Alexeyevsky + +import functools +from flask import session, request, redirect as flask_redirect, url_for +import config + +cookie = getattr(config, "REDIRECT_BACK_COOKIE", "back") +default_view = getattr(config, "REDIRECT_BACK_DEFAULT", "index") + + +def anchor(func, cookie=cookie): + @functools.wraps(func) + def result(*args, **kwargs): + session[cookie] = request.url + return func(*args, **kwargs) + return result + + +def default_url(default, **url_args): + return url_for(default, **url_args) + + +def url(default=default_view, cookie=cookie, **url_args): + return session.get(cookie, default_url(default, **url_args)) + + +def redirect(default=default_view, cookie=cookie, **url_args): + print(request.url, request.url_rule, default, session.get(cookie)) + target = url(default, cookie, **url_args) + if target == request.url: + target = default_url(default, **url_args) + return flask_redirect(target) -- GitLab