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