
    h                     x    S SK Jr  S SKJrJr  S SKJr  \" \R                  5      r " S S5      r	 " S S5      r
g)	    )settings)	constantsutils)SimpleLazyObjectc                   Z    \ rS rSrSrSS jrS rS rS rS r	\
S	 5       r\
S
 5       rSrg)Message   z
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                 <    [        U5      U l        X l        X0l        g N)intlevelmessage
extra_tagsselfr   r   r   s       V/var/www/html/env/lib/python3.13/site-packages/django/contrib/messages/storage/base.py__init__Message.__init__   s    Z
$    c                     [        U R                  5      U l        U R                  b  [        U R                  5      U l        gSU l        g)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   _prepareMessage._prepare   s4    
 4<<(26//2M#doo.SWr   c                     [        U[        5      (       d  [        $ U R                  UR                  :H  =(       a    U R                  UR                  :H  $ r   )
isinstancer   NotImplementedr   r   )r   others     r   __eq__Message.__eq__   s:    %))!!zzU[[(JT\\U]]-JJr   c                 ,    [        U R                  5      $ r   )r   r   r   s    r   __str__Message.__str__!   s    4<<  r   c                     U R                   (       a  SU R                   < 3OSnSU R                   SU R                  < U S3$ )Nz, extra_tags= zMessage(level=z
, message=)r   r   r   )r   r   s     r   __repr__Message.__repr__$   s?    <@OO}T__$78QS


|:dll5Ej\QRSSr   c                 ^    SR                  S U R                  U R                  4 5       5      $ )N c              3   6   #    U  H  o(       d  M  Uv   M     g 7fr    ).0tags     r   	<genexpr>Message.tags.<locals>.<genexpr>*   s     P'HC'Hs   
	)joinr   	level_tagr   s    r   tagsMessage.tags(   s$    xxP'HPPPr   c                 B    [         R                  U R                  S5      $ )Nr%   )
LEVEL_TAGSgetr   r   s    r   r3   Message.level_tag,   s    ~~djj"--r   r'   r   )__name__
__module____qualname____firstlineno____doc__r   r   r   r"   r(   propertyr4   r3   __static_attributes__r-   r   r   r   r      sM    %
XK
!T Q Q . .r   r   c                      ^  \ rS rSrSrU 4S jrS rS rS rS r	\
S 5       rS	 rS
 rS rS rSS jrS rSS jr\
" \\\5      rSrU =r$ )BaseStorage1   z
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                 \   > Xl         / U l        SU l        SU l        [        TU ]  " U0 UD6  g )NF)request_queued_messagesused	added_newsuperr   )r   rE   argskwargs	__class__s       r   r   BaseStorage.__init__9   s0     "	$)&)r   c                 X    [        U R                  5      [        U R                  5      -   $ r   )len_loaded_messagesrF   r   s    r   __len__BaseStorage.__len__@   s#    4(()C0E0E,FFFr   c                     SU l         U R                  (       a,  U R                  R                  U R                  5        / U l        [	        U R                  5      $ )NT)rG   rF   rP   extenditerr   s    r   __iter__BaseStorage.__iter__C   sE    	  !!(()>)>?$&D!D))**r   c                 H    XR                   ;   =(       d    XR                  ;   $ r   )rP   rF   )r   items     r   __contains__BaseStorage.__contains__J   s    ,,,M8M8M0MMr   c                 R    SU R                   R                   SU R                  < S3$ )N<z
: request=>)rL   r<   rE   r   s    r   r(   BaseStorage.__repr__M   s'    4>>../z$,,9IKKr   c                     [        U S5      (       d"  U R                  5       u  pU=(       d    / U l        U R                  $ )z[
Return a list of loaded messages, retrieving them first if they have
not been loaded yet.
_loaded_data)hasattr_getra   )r   messagesall_retrieveds      r   rP   BaseStorage._loaded_messagesP   s7     t^,,&*iik#H (BD   r   c                     [        S5      e)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   rJ   rK   s      r   rc   BaseStorage._get[   s     "D
 	
r   c                     [        S5      e)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() methodrh   )r   rd   responserJ   rK   s        r   _storeBaseStorage._storel   s     "F
 	
r   c                 6    U H  nUR                  5         M     g)z)
Prepare a list of messages for storage.
N)r   )r   rd   r   s      r   _prepare_messagesBaseStorage._prepare_messagesy   s      G  r   c                 
   U R                  U R                  5        U R                  (       a  U R                  U R                  U5      $ U R                  (       a*  U R
                  U R                  -   nU R                  X!5      $ g)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)rp   rF   rG   rm   rH   rP   )r   rl   rd   s      r   updateBaseStorage.update   sg     	t44599;;t44h??^^,,t/D/DDH;;x22 r   c                     U(       d  g[        U5      nXR                  :  a  gSU l        [        XUS9nU R                  R                  U5        g)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   rH   r   rF   appendr   s       r   addBaseStorage.add   sG     E
::%Z@$$W-r   c                     [        U S5      (       d$  [        [        S[        R                  5      U l        U R
                  $ )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)rb   getattrr   r   INFOrz   r   s    r   
_get_levelBaseStorage._get_level   s/     tX&&!(OY^^LDK{{r   c                 R    Uc  [        U S5      (       a  U ?g[        U5      U l        g)z{
Set a custom minimum recorded level.

If set to ``None``, the default level will be used (see the
``_get_level`` method).
Nrz   )rb   rz   r   )r   values     r   
_set_levelBaseStorage._set_level   s%     =WT844e*DKr   )rz   ra   rF   rH   rE   rG   )r%   r   )r:   r;   r<   r=   r>   r   rQ   rV   rZ   r(   r?   rP   rc   rm   rp   rs   rw   r~   r   r   r@   __classcell__)rL   s   @r   rB   rB   1   sk    *G+NL ! !
"
3.$	
% ZZ8Er   rB   N)django.confr   django.contrib.messagesr   r   django.utils.functionalr   get_level_tagsr7   r   rB   r-   r   r   <module>r      s5      4 4e223
&. &.RF9 F9r   