
 X|                 @   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)FallbackStoragez
    Tries to store all messages in the first backend, storing any unstored
    messages in each subsequent backend backend.
    c                sK   t  t |   j         f d d   |  j D |  _ t   |  _ d  S)Nc                s   g  |  ] } |       q S r   ).0Zstorage_class)argskwargsr   V/home/ubuntu/projects/ifolica/build/django/django/contrib/messages/storage/fallback.py
<listcomp>   s   	z,FallbackStorage.__init__.<locals>.<listcomp>)superr   __init__storage_classesstoragesset_used_storages)selfr   r	   )	__class__)r   r	   r
   r      s    zFallbackStorage.__init__c             O   sv   g  } xc |  j  D]X } | j   \ } } | d k r8 Pn  | rQ |  j j |  n  | j |  | r Pq q W| | f S)zK
        Gets 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   sk   xd |  j  D]Y } | r1 | j | | d d } q
 | |  j k r
 | j g  |  |  j j |  q
 q
 W| S)z
        Stores the messages, returning 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   