|
29
|
1 |
from django.contrib.messages.storage.base import BaseStorage |
|
|
2 |
|
|
|
3 |
|
|
|
4 |
class SessionStorage(BaseStorage): |
|
|
5 |
""" |
|
|
6 |
Stores messages in the session (that is, django.contrib.sessions). |
|
|
7 |
""" |
|
|
8 |
session_key = '_messages' |
|
|
9 |
|
|
|
10 |
def __init__(self, request, *args, **kwargs): |
|
|
11 |
assert hasattr(request, 'session'), "The session-based temporary "\ |
|
|
12 |
"message storage requires session middleware to be installed, "\ |
|
|
13 |
"and come before the message middleware in the "\ |
|
|
14 |
"MIDDLEWARE_CLASSES list." |
|
|
15 |
super(SessionStorage, self).__init__(request, *args, **kwargs) |
|
|
16 |
|
|
|
17 |
def _get(self, *args, **kwargs): |
|
|
18 |
""" |
|
|
19 |
Retrieves a list of messages from the request's session. This storage |
|
|
20 |
always stores everything it is given, so return True for the |
|
|
21 |
all_retrieved flag. |
|
|
22 |
""" |
|
|
23 |
return self.request.session.get(self.session_key), True |
|
|
24 |
|
|
|
25 |
def _store(self, messages, response, *args, **kwargs): |
|
|
26 |
""" |
|
|
27 |
Stores a list of messages to the request's session. |
|
|
28 |
""" |
|
|
29 |
if messages: |
|
|
30 |
self.request.session[self.session_key] = messages |
|
|
31 |
else: |
|
|
32 |
self.request.session.pop(self.session_key, None) |
|
|
33 |
return [] |