def redirect(message="", *, err=None, default=None, view_name=None):
"""
GWAY error/redirect handler.
Deprecated: 'view_name'. Now uses gw.web.app.current_endpoint.
"""
from bottle import request, response
debug_enabled = bool(getattr(gw, "debug", False))
visited = gw.web.cookies.get("visited", "")
visited_items = visited.split("|") if visited else []
# --- DEPRECATED: view_name, use gw.web.app.current_endpoint instead ---
if view_name is not None:
import warnings
warnings.warn(
"redirect(): 'view_name' is deprecated. Use gw.web.app.current_endpoint instead.",
DeprecationWarning
)
curr_view = getattr(gw.web.app, "current_endpoint", None)
view_key = curr_view() if callable(curr_view) else curr_view
if not view_key and view_name:
view_key = view_name
pruned = False
if view_key and gw.web.cookies.check_consent():
norm_broken = (view_key or "").replace("-", " ").replace("_", " ").title().lower()
new_items = []
for v in visited_items:
title = v.split("=", 1)[0].strip().lower()
if title == norm_broken:
pruned = True
continue
new_items.append(v)
if pruned:
gw.web.cookies.set("visited", "|".join(new_items))
visited_items = new_items
if debug_enabled:
return view_debug_error(
title="GWAY Debug Error",
message=message,
err=err,
status=500,
default=default
)
response.status = 302
response.set_header("Location", default or gw.web.app.default_home())
return ""