diff options
| author | Magnus Hagander | 2010-01-08 14:08:05 +0000 |
|---|---|---|
| committer | Magnus Hagander | 2010-01-08 14:08:05 +0000 |
| commit | 43ef9ca9a8d6850244c4c1e3a0d3e70af42d10eb (patch) | |
| tree | aea285880c7da190ee0348bcd1810bb35f4ba63e /postgresqleu/util | |
| parent | a53c7a4ca80a5f8b522120ca8083714960a03a7d (diff) | |
Make filters in admin be sticky, according to:
http://code.djangoproject.com/ticket/3777
Diffstat (limited to 'postgresqleu/util')
| -rw-r--r-- | postgresqleu/util/__init__.py | 0 | ||||
| -rw-r--r-- | postgresqleu/util/middleware.py | 36 |
2 files changed, 36 insertions, 0 deletions
diff --git a/postgresqleu/util/__init__.py b/postgresqleu/util/__init__.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/postgresqleu/util/__init__.py diff --git a/postgresqleu/util/middleware.py b/postgresqleu/util/middleware.py new file mode 100644 index 00000000..265520c9 --- /dev/null +++ b/postgresqleu/util/middleware.py @@ -0,0 +1,36 @@ +from django import http + +class FilterPersistMiddleware(object): + def process_request(self, request): + + path = request.path + if path.find('/admin/') != -1: #Dont waste time if we are not in admin + query_string = request.META['QUERY_STRING'] + if not request.META.has_key('HTTP_REFERER'): + return None + + session = request.session + if session.get('redirected', False):#so that we dont loop once redirected + 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: #We are in same page as before + if query_string == '': #Filter is empty, delete it + if session.get(key,False): + del session[key] + return None + request.session[key] = query_string + else: #We are are coming from another page, restore filter if available + if session.get(key, False): + query_string=request.session.get(key) + redirect_to = path+'?'+query_string + request.session['redirected'] = True + return http.HttpResponseRedirect(redirect_to) + else: + return None + else: + return None |
