4 from django.contrib import messages
5 from django.http import HttpResponseRedirect
7 class RequestMessagesMiddleware:
9 A middleware that checks for specific get parameters in url, appends
10 associated messages and redirects to the same url (removing the parameter
11 to avoid circular redirects).
15 'logged_in': ((messages.SUCCESS, 'You have successfully logged in'),),
16 'logged_out': ((messages.SUCCESS, 'You have successfully logged out'),),
19 def process_request(self, request):
20 qs = request.META.get('QUERY_STRING', '')
24 qs = urlparse.parse_qs(qs)
26 # parse query string, add messages and keep params used to remove
27 # them later from the redirect url
29 for param, messages_tuples in self.PARAMS_MAP.iteritems():
31 params_to_remove.append(param)
32 for message in messages_tuples:
35 messages.add_message(request, msg_type, msg)
37 if not params_to_remove:
40 for p in params_to_remove:
43 # create the redirect url
44 redirect_qs = urllib.urlencode(qs)
46 return HttpResponseRedirect("/?" + redirect_qs)