From 5a4e2ea7928fe70f0d89bc80ecb850a5eb4e849c Mon Sep 17 00:00:00 2001 From: Magnus Hagander Date: Wed, 30 Jan 2013 11:41:14 +0100 Subject: [PATCH] Make filters in admin be sticky, according to: http://code.djangoproject.com/ticket/3777 --- pgweb/util/middleware.py | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/pgweb/util/middleware.py b/pgweb/util/middleware.py index ab0523b8..a8be133f 100644 --- a/pgweb/util/middleware.py +++ b/pgweb/util/middleware.py @@ -42,7 +42,34 @@ class PgMiddleware(object): return None -# Thread local store for username, see comment at the top of this file def process_request(self, request): +# Thread local store for username, see comment at the top of this file _thread_locals.user = getattr(request, 'user', None) +# Per django ticket #3777, make filters in admin be sticky + path = request.path + if path.find('/admin/') != -1: + query_string = request.META['QUERY_STRING'] + if not request.META.has_key('HTTP_REFERER'): + return None + session = request.session + if session.get('redirected', False): + del session['redirected'] + return None + referrer = request.META['HTTP_REFERER'].split('?')[0] + referrer = referrer[referrer.find('/admin'):len(referrer)] + key = 'key'+path.replace('/','_') + if path == referrer: + if query_string == '': + if session.get(key,False): + del session[key] + return None + request.session[key] = query_string + else: + if session.get(key,False): + query_string=request.session.get(key) + redirect_to = path+'?'+query_string + request.session['redirected'] = True + return HttpResponseRedirect(redirect_to) + else: + return None