3
(h                 @   sP   d dl Z d dlmZ d dlmZ d dlmZmZ d dlm	Z	 G dd deZ
dS )    N)settings)BaseStorage)MessageDecoderMessageEncoder)sixc                   sD   e Zd ZdZdZ fddZdd Zdd Zd	d
 Zdd Z	  Z
S )SessionStoragezL
    Stores messages in the session (that is, django.contrib.sessions).
    Z	_messagesc                s@   t |ds$tdtjd krdnd tt| j|f|| d S )NsessionzThe 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superr   __init__)selfrequestargskwargs)	__class__ K/tmp/pip-install-q3hcpn_q/Django/django/contrib/messages/storage/session.pyr      s    zSessionStorage.__init__c             O   s   | j | jjj| jdfS )z
        Retrieves 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   s0   |r| j || jj| j< n| jjj| jd g S )zE
        Stores 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jrtj|tdS |S )N)cls)
isinstancer   string_typesjsonloadsr   )r   datar   r   r   r   .   s    z#SessionStorage.deserialize_messages)__name__
__module____qualname____doc__r   r   r   r   r   r   __classcell__r   r   )r   r   r      s   
r   )r&   Zdjango.confr   Z$django.contrib.messages.storage.baser   Z&django.contrib.messages.storage.cookier   r   Zdjango.utilsr   r   r   r   r   r   <module>   s
   