
vÅÏ^/  ã               @   sJ   d  d l  m Z d  d l m Z d  d l m Z Gd d „  d e ƒ Z d S)é    )ÚBaseStorage)ÚCookieStorage)ÚSessionStoragec                   sL   e  Z d  Z d Z e e f Z ‡  f d d †  Z d d „  Z d d „  Z	 ‡  S)ÚFallbackStoragezu
    Try to store all messages in the first backend. Store any unstored
    messages in each subsequent backend.
    c                sE   t  ƒ  j ˆ  ˆ Ž  ‡  ‡ f d d †  |  j Dƒ |  _ t ƒ  |  _ d  S)Nc                s   g  |  ] } | ˆ  ˆ Ž  ‘ q S© r   )Ú.0Zstorage_class)ÚargsÚkwargsr   úJ/tmp/pip-build-8lau8j11/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   sm   g  } xZ |  j  D]O } | j ƒ  \ } } | d k r5 P| rK |  j j | ƒ | j | ƒ | r Pq 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   sh   xa |  j  D]V } | r1 | j | | d d ƒ} q
 | |  j k r
 | j g  | ƒ |  j 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.
        Zremove_oldestF)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   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   