
    Evg                         d dl mZ d dlmZmZ d dlmZ  eej                  Z G d d          Z	 G d d          Z
dS )	    )settings)	constantsutils)SimpleLazyObjectc                   ^    e Zd ZdZd
dZd Zd Zd Zd Ze	d             Z
e	d	             ZdS )Messagez
    Represent an actual message that can be stored in any of the supported
    storage classes (typically session- or cookie-based) and rendered in a view
    or template.
    Nc                 J    t          |          | _        || _        || _        d S N)intlevelmessage
extra_tagsselfr   r   r   s       a/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/django/contrib/messages/storage/base.py__init__zMessage.__init__   s!    ZZ
$    c                 |    t          | j                  | _        | j        t          | j                  nd| _        dS )z
        Prepare the message for serialization by forcing the ``message``
        and ``extra_tags`` to str in case they are lazy translations.
        N)strr   r   r   s    r   _preparezMessage._prepare   s7    
 4<((26/2M#do...SWr   c                 z    t          |t                    st          S | j        |j        k    o| j        |j        k    S r
   )
isinstancer   NotImplementedr   r   )r   others     r   __eq__zMessage.__eq__   s7    %)) 	"!!zU[(JT\U]-JJr   c                 *    t          | j                  S r
   )r   r   r   s    r   __str__zMessage.__str__!   s    4<   r   c                 R    | j         r
d| j         nd}d| j         d| j        | dS )Nz, extra_tags= zMessage(level=z
, message=))r   r   r   )r   r   s     r   __repr__zMessage.__repr__$   sA    <@OS8T_888QS
S
SSdlSjSSSSr   c                 X    d                     d | j        | j        fD                       S )N c              3      K   | ]}||V  	d S r
    ).0tags     r   	<genexpr>zMessage.tags.<locals>.<genexpr>*   s'      PPCPPPPPPPr   )joinr   	level_tagr   s    r   tagszMessage.tags(   s,    xxPP'HPPPPPPr   c                 B    t                               | j        d          S )Nr    )
LEVEL_TAGSgetr   r   s    r   r+   zMessage.level_tag,   s    ~~dj"---r   r
   )__name__
__module____qualname____doc__r   r   r   r   r"   propertyr,   r+   r&   r   r   r   r      s         % % % %
X X XK K K
! ! !T T T Q Q XQ . . X. . .r   r   c                        e Zd ZdZ fdZd Zd Zd Zd Ze	d             Z
d Zd	 Zd
 Zd ZddZd ZddZ e	eee          Z xZS )BaseStoragez
    This is the base backend for temporary message storage.

    This is not a complete class; to be a usable storage backend, it must be
    subclassed and the two methods ``_get`` and ``_store`` overridden.
    c                 r    || _         g | _        d| _        d| _         t	                      j        |i | d S )NF)request_queued_messagesused	added_newsuperr   )r   r8   argskwargs	__class__s       r   r   zBaseStorage.__init__9   sB     "	$)&)))))r   c                 T    t          | j                  t          | j                  z   S r
   )len_loaded_messagesr9   r   s    r   __len__zBaseStorage.__len__@   s#    4())C0E,F,FFFr   c                     d| _         | j        r&| j                            | j                   g | _        t	          | j                  S )NT)r:   r9   rB   extenditerr   s    r   __iter__zBaseStorage.__iter__C   sG    	  	'!(()>???$&D!D)***r   c                 &    || j         v p|| j        v S r
   )rB   r9   )r   items     r   __contains__zBaseStorage.__contains__J   s    t,,M8M0MMr   c                 2    d| j         j         d| j        dS )N<z
: request=>)r?   r2   r8   r   s    r   r"   zBaseStorage.__repr__M   s"    K4>.KK$,KKKKr   c                 p    t          | d          s |                                 \  }}|pg | _        | j        S )zs
        Return a list of loaded messages, retrieving them first if they have
        not been loaded yet.
        _loaded_data)hasattr_getrO   )r   messagesall_retrieveds      r   rB   zBaseStorage._loaded_messagesP   s=     t^,, 	/&*iikk#Hm (BD  r   c                      t          d          )a  
        Retrieve a list of stored messages. Return a tuple of the messages
        and a flag indicating whether or not all the messages originally
        intended to be stored in this storage were, in fact, stored and
        retrieved; e.g., ``(messages, all_retrieved)``.

        **This method must be implemented by a subclass.**

        If it is possible to tell if the backend was not used (as opposed to
        just containing no messages) then ``None`` should be returned in
        place of ``messages``.
        z6subclasses of BaseStorage must provide a _get() methodNotImplementedError)r   r=   r>   s      r   rQ   zBaseStorage._get[   s     "D
 
 	
r   c                      t          d          )z
        Store a list of messages and return a list of any messages which could
        not be stored.

        One type of object must be able to be stored, ``Message``.

        **This method must be implemented by a subclass.**
        z8subclasses of BaseStorage must provide a _store() methodrU   )r   rR   responser=   r>   s        r   _storezBaseStorage._storel   s     "F
 
 	
r   c                 8    |D ]}|                                  dS )z9
        Prepare a list of messages for storage.
        N)r   )r   rR   r   s      r   _prepare_messageszBaseStorage._prepare_messagesy   s2       	 	G	 	r   c                     |                      | j                   | j        r|                     | j        |          S | j        r%| j        | j        z   }|                     ||          S dS )z
        Store all unread messages.

        If the backend has yet to be iterated, store previously stored messages
        again. Otherwise, only store messages added after the last iteration.
        N)r[   r9   r:   rY   r;   rB   )r   rX   rR   s      r   updatezBaseStorage.update   st     	t45559 	3;;t4h???^ 	3,t/DDH;;x222	3 	3r   r    c                     |sdS t          |          }|| j        k     rdS d| _        t          |||          }| j                            |           dS )z
        Queue a message to be stored.

        The message is only queued if it contained something and its level is
        not less than the recording level (``self.level``).
        NT)r   )r   r   r;   r   r9   appendr   s       r   addzBaseStorage.add   sf      	FE

4:F%Z@@@$$W-----r   c                 z    t          | d          s%t          t          dt          j                  | _        | j        S )z
        Return the minimum recorded level.

        The default level is the ``MESSAGE_LEVEL`` setting. If this is
        not found, the ``INFO`` level is used.
        _levelMESSAGE_LEVEL)rP   getattrr   r   INFOrb   r   s    r   
_get_levelzBaseStorage._get_level   s4     tX&& 	M!(OY^LLDK{r   Nc                 Z    |t          | d          r| `dS t          |          | _        dS )z
        Set a custom minimum recorded level.

        If set to ``None``, the default level will be used (see the
        ``_get_level`` method).
        Nrb   )rP   rb   r   )r   values     r   
_set_levelzBaseStorage._set_level   s1     =WT844=e**DKKKr   )r    r
   )r0   r1   r2   r3   r   rC   rG   rJ   r"   r4   rB   rQ   rY   r[   r]   r`   rf   ri   r   __classcell__)r?   s   @r   r6   r6   1   s        * * * * *G G G+ + +N N NL L L ! ! X!
 
 
"
 
 
  3 3 3. . . .$	 	 	
% 
% 
% 
% HZZ88EEEEEr   r6   N)django.confr   django.contrib.messagesr   r   django.utils.functionalr   get_level_tagsr.   r   r6   r&   r   r   <module>ro      s                4 4 4 4 4 4 4 4 4 4 4 4 4 4e233
&. &. &. &. &. &. &. &.RF9 F9 F9 F9 F9 F9 F9 F9 F9 F9r   