o
    uvXj/  ã                   @   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 )ÚFallbackStoragezu
    Try to store all messages in the first backend. Store any unstored
    messages in each subsequent backend.
    c                    s6   t ƒ jˆ i ˆ¤Ž ‡ ‡fdd„| jD ƒ| _tƒ | _d S )Nc                    s   g | ]	}|ˆ i ˆ¤Ž‘qS © r   )Ú.0Ústorage_class©ÚargsÚkwargsr   úe/var/www/html/myproject/venv/lib/python3.10/site-packages/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      s
   ÿzFallbackStorage.__init__c                 O   s^   g }| j D ]%}| ¡ \}}|du r ||fS |r| j |¡ | |¡ |r* ||fS q||fS )zJ
        Get a single list of messages from all storage backends.
        N)r   Ú_getr   ÚaddÚextend)r   r
   r   Úall_messagesÚstorageÚmessagesÚall_retrievedr   r   r   r      s   
ù
þzFallbackStorage._getc                 O   sH   | j D ]}|r|j||dd�}q|| jv r!| g |¡ | j |¡ q|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)Ú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)Ú$django.contrib.messages.storage.baser   Ú&django.contrib.messages.storage.cookier   Ú'django.contrib.messages.storage.sessionr   r   r   r   r   r   Ú<module>   s    