
vÅÏ^Á  ã               @   s\   d  d l  Z  d  d l m Z d  d l m Z d  d l m Z m Z Gd d „  d e ƒ Z d S)é    N)Úsettings)ÚBaseStorage)ÚMessageDecoderÚMessageEncoderc                   s^   e  Z d  Z d Z d Z ‡  f d d †  Z d d „  Z d d „  Z d	 d
 „  Z d d „  Z	 ‡  S)ÚSessionStoragezK
    Store messages in the session (that is, django.contrib.sessions).
    Z	_messagesc                sN   t  | d ƒ s4 t d t j d  k r* d n d ƒ ‚ t ƒ  j | | | Ž d  S)NÚsessionz™The session-based temporary message storage requires session middleware to be installed, and come before the message middleware in the MIDDLEWARE%s list.Z_CLASSESÚ )ÚhasattrÚAssertionErrorr   Z
MIDDLEWAREÚsuperÚ__init__)ÚselfÚrequestÚargsÚkwargs)Ú	__class__© úI/tmp/pip-build-8lau8j11/django/django/contrib/messages/storage/session.pyr      s    zSessionStorage.__init__c             O   s%   |  j  |  j j j |  j ƒ ƒ d f S)z·
        Retrieve a list of messages from the request's session. This storage
        always stores everything it is given, so return True for the
        all_retrieved flag.
        T)Údeserialize_messagesr   r   ÚgetÚsession_key)r   r   r   r   r   r   Ú_get   s    zSessionStorage._getc             O   sB   | r% |  j  | ƒ |  j j |  j <n |  j j j |  j d ƒ g  S)zD
        Store a list of messages to the request's session.
        N)Úserialize_messagesr   r   r   Úpop)r   ÚmessagesÚresponser   r   r   r   r   Ú_store   s    zSessionStorage._storec             C   s   t  d d ƒ } | j | ƒ S)NÚ
separatorsú,ú:)r   r   )r   Úencode)r   r   Úencoderr   r   r   r   )   s    z!SessionStorage.serialize_messagesc             C   s,   | r( t  | t ƒ r( t j | d t ƒS| S)NÚcls)Ú
isinstanceÚstrÚjsonÚloadsr   )r   Údatar   r   r   r   -   s    z#SessionStorage.deserialize_messages)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r   r   )r   r   r   
   s   
r   )	r%   Zdjango.confr   Z$django.contrib.messages.storage.baser   Z&django.contrib.messages.storage.cookier   r   r   r   r   r   r   Ú<module>   s   