o 3a+@sDddlmZddlmZmZeZGdddZGdddZdS))settings) constantsutilsc@sJeZdZdZdddZddZddZd d Zed d Z ed dZ dS)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. NcCst||_||_||_dSN)intlevelmessage extra_tagsselfrr r r F/usr/lib/python3/dist-packages/django/contrib/messages/storage/base.py__init__s  zMessage.__init__cCs0t|j|_|jdurt|j|_dSd|_dS)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 r r r_prepares $zMessage._preparecCs&t|tstS|j|jko|j|jkSr) isinstancerNotImplementedrr )r otherr r r__eq__s zMessage.__eq__cCs t|jSr)rr rr r r__str__ s zMessage.__str__cCsddd|j|jfDS)N css|]}|r|VqdSrr ).0tagr r r %szMessage.tags..)joinr level_tagrr r rtags#sz Message.tagscCst|jdS)N) LEVEL_TAGSgetrrr r rr'szMessage.level_tagr) __name__ __module__ __qualname____doc__rrrrpropertyrrr r r rrs  rcseZdZdZfddZddZddZdd Zed d Z d d Z ddZ ddZ ddZ dddZddZdddZeeeeZZS) 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. cs.||_g|_d|_d|_tj|i|dS)NF)request_queued_messagesused added_newsuperr)r r(argskwargs __class__r rr4s zBaseStorage.__init__cCst|jt|jSr)len_loaded_messagesr)rr r r__len__;zBaseStorage.__len__cCs*d|_|jr|j|jg|_t|jS)NT)r*r)r2extenditerrr r r__iter__>s  zBaseStorage.__iter__cCs||jvp ||jvSr)r2r))r itemr r r __contains__Er4zBaseStorage.__contains__cCs&t|ds|\}}|pg|_|jS)zs Return a list of loaded messages, retrieving them first if they have not been loaded yet. _loaded_data)hasattr_getr:)r messages all_retrievedr r rr2Hs   zBaseStorage._loaded_messagescOtd)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() methodNotImplementedError)r r-r.r r rr<Ss zBaseStorage._getcOr?)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() methodr@)r r=responser-r.r r r_storebs zBaseStorage._storecCs|D]}|qdS)z9 Prepare a list of messages for storage. N)r)r r=r r r r_prepare_messagesms zBaseStorage._prepare_messagescCsB||j|jr||j|S|jr|j|j}|||SdS)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)rDr)r*rCr+r2)r rBr=r r rupdatets   zBaseStorage.updatercCsB|sdSt|}||jkrdSd|_t|||d}|j|dS)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 )rrr+rr)appendr r r radds zBaseStorage.addcCs t|ds ttdtj|_|jS)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)r;getattrrrINFOrHrr r r _get_levels zBaseStorage._get_levelNcCs(|dur t|dr |`dSt||_dS)z Set a custom minimum recorded level. If set to ``None``, the default level will be used (see the ``_get_level`` method). NrH)r;rHr)r valuer r r _set_levelszBaseStorage._set_level)rr)r"r#r$r%rr3r7r9r&r2r<rCrDrErGrLrNr __classcell__r r r/rr',s        r'N) django.confrdjango.contrib.messagesrrget_level_tagsr rr'r r r rs %