Fixed #21421 -- Added level_tag attribute on messages.
Exposing the level name (e.g. "info") makes it possible to prepend something to the class name. For example, Twitter Bootstrap has an alert-info class. This class can now be added to the message using `class="alert-{{ message.level_tag }}". Because the level_tag was on the end of the `tags` property, it could not be used in this fashion when extra_tags were given.
This commit is contained in:
parent
f67cce0434
commit
d87127655f
|
@ -40,18 +40,20 @@ class Message(object):
|
||||||
return force_text(self.message)
|
return force_text(self.message)
|
||||||
|
|
||||||
def _get_tags(self):
|
def _get_tags(self):
|
||||||
label_tag = force_text(LEVEL_TAGS.get(self.level, ''),
|
|
||||||
strings_only=True)
|
|
||||||
extra_tags = force_text(self.extra_tags, strings_only=True)
|
extra_tags = force_text(self.extra_tags, strings_only=True)
|
||||||
if extra_tags and label_tag:
|
if extra_tags and self.level_tag:
|
||||||
return ' '.join([extra_tags, label_tag])
|
return ' '.join([extra_tags, self.level_tag])
|
||||||
elif extra_tags:
|
elif extra_tags:
|
||||||
return extra_tags
|
return extra_tags
|
||||||
elif label_tag:
|
elif self.level_tag:
|
||||||
return label_tag
|
return self.level_tag
|
||||||
return ''
|
return ''
|
||||||
tags = property(_get_tags)
|
tags = property(_get_tags)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def level_tag(self):
|
||||||
|
return force_text(LEVEL_TAGS.get(self.level, ''), strings_only=True)
|
||||||
|
|
||||||
|
|
||||||
class BaseStorage(object):
|
class BaseStorage(object):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -361,6 +361,15 @@ class BaseTests(object):
|
||||||
['info', '', 'extra-tag debug', 'warning', 'error',
|
['info', '', 'extra-tag debug', 'warning', 'error',
|
||||||
'success'])
|
'success'])
|
||||||
|
|
||||||
|
def test_level_tag(self):
|
||||||
|
storage = self.get_storage()
|
||||||
|
storage.level = 0
|
||||||
|
add_level_messages(storage)
|
||||||
|
tags = [msg.level_tag for msg in storage]
|
||||||
|
self.assertEqual(tags,
|
||||||
|
['info', '', 'debug', 'warning', 'error',
|
||||||
|
'success'])
|
||||||
|
|
||||||
@override_settings_tags(MESSAGE_TAGS={
|
@override_settings_tags(MESSAGE_TAGS={
|
||||||
constants.INFO: 'info',
|
constants.INFO: 'info',
|
||||||
constants.DEBUG: '',
|
constants.DEBUG: '',
|
||||||
|
|
|
@ -212,6 +212,32 @@ is a mapping of the message level names to their numeric value::
|
||||||
</ul>
|
</ul>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
The ``Message`` class
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
.. class:: storage.base.Message
|
||||||
|
|
||||||
|
When you loop over the list of messages in a template, what you get are
|
||||||
|
instances of the ``Message`` class. It's quite a simple object, with only a
|
||||||
|
few attributes:
|
||||||
|
|
||||||
|
* ``message``: The actual text of the message.
|
||||||
|
|
||||||
|
* ``level``: An integer describing the type of the message (see the
|
||||||
|
`message levels`_ section above).
|
||||||
|
|
||||||
|
* ``tags``: A string combining all the message's tags (``extra_tags`` and
|
||||||
|
``level_tag``) separated by spaces.
|
||||||
|
|
||||||
|
* ``extra_tags``: A string containing custom tags for this message,
|
||||||
|
separated by spaces. It's empty by default.
|
||||||
|
|
||||||
|
.. versionadded:: 1.7
|
||||||
|
|
||||||
|
* ``level_tag``: The string representation of the level. By default, it's
|
||||||
|
the lowercase version of the name of the associated constant, but this
|
||||||
|
can be changed if you need by using the :setting:`MESSAGE_TAGS` setting.
|
||||||
|
|
||||||
Creating custom message levels
|
Creating custom message levels
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
|
|
|
@ -221,6 +221,10 @@ Minor features
|
||||||
* The :ref:`messages context processor <message-displaying>` now adds a
|
* The :ref:`messages context processor <message-displaying>` now adds a
|
||||||
dictionary of default levels under the name ``DEFAULT_MESSAGE_LEVELS``.
|
dictionary of default levels under the name ``DEFAULT_MESSAGE_LEVELS``.
|
||||||
|
|
||||||
|
* :class:`~django.contrib.messages.storage.base.Message` objects now have a
|
||||||
|
``level_tag`` attribute that contains the string representation of the
|
||||||
|
message level.
|
||||||
|
|
||||||
:mod:`django.contrib.redirects`
|
:mod:`django.contrib.redirects`
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue