B
    ¦0H[a  ã               @   s8   d dl mZ d dlmZ d dlmZ G dd„ deƒZdS )é    )ÚBaseStorage)ÚCookieStorage)ÚSessionStoragec                   s8   e Zd ZdZeefZ‡ fdd„Zdd„ Zdd„ Z	‡  Z
S )ÚFallbackStoragez}
    Try to store all messages in the first backend. Store any unstored
    messages in each subsequent backend backend.
    c                s2   t ƒ jˆ ˆŽ ‡ ‡fdd„| jD ƒ| _tƒ | _d S )Nc                s   g | ]}|ˆ ˆŽ‘qS © r   )Ú.0Zstorage_class)ÚargsÚkwargsr   úlC:\Users\HIRONO~1\AppData\Local\Temp\pip-install-6bm3nxem\django\django\contrib\messages\storage\fallback.pyú
<listcomp>   s   z,FallbackStorage.__init__.<locals>.<listcomp>)ÚsuperÚ__init__Ústorage_classesÚstoragesÚsetÚ_used_storages)Úselfr   r	   )Ú	__class__)r   r	   r
   r      s    zFallbackStorage.__init__c             O   sR   g }xD| j D ]:}| ¡ \}}|dkr&P |r6| j |¡ | |¡ |rP qW ||fS )zJ
        Get a single list of messages from all storage backends.
        N)r   Ú_getr   ÚaddÚextend)r   r   r	   Zall_messagesÚstorageÚmessagesZall_retrievedr   r   r
   r      s    
zFallbackStorage._getc             O   sL   xF| j D ]<}|r"|j||dd�}q|| jkr| g |¡ | j |¡ qW |S )zÎ
        Store the messages and return any unstored messages after trying all
        backends.

        For each storage backend, any messages not stored are passed on to the
        next backend.
        F)Zremove_oldest)r   Ú_storer   Úremove)r   r   Úresponser   r	   r   r   r   r
   r   &   s    

zFallbackStorage._store)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   Ú__classcell__r   r   )r   r
   r      s
   r   N)Z$django.contrib.messages.storage.baser   Z&django.contrib.messages.storage.cookier   Z'django.contrib.messages.storage.sessionr   r   r   r   r   r
   Ú<module>   s   