web/lib/django/contrib/messages/storage/session.py
changeset 29 cc9b7e14412b
equal deleted inserted replaced
28:b758351d191f 29:cc9b7e14412b
       
     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 []