mirror of
https://github.com/django/django.git
synced 2025-10-25 14:46:09 +00:00
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:
committed by
Baptiste Mispelon
parent
f67cce0434
commit
d87127655f
@@ -40,18 +40,20 @@ class Message(object):
|
||||
return force_text(self.message)
|
||||
|
||||
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)
|
||||
if extra_tags and label_tag:
|
||||
return ' '.join([extra_tags, label_tag])
|
||||
if extra_tags and self.level_tag:
|
||||
return ' '.join([extra_tags, self.level_tag])
|
||||
elif extra_tags:
|
||||
return extra_tags
|
||||
elif label_tag:
|
||||
return label_tag
|
||||
elif self.level_tag:
|
||||
return self.level_tag
|
||||
return ''
|
||||
tags = property(_get_tags)
|
||||
|
||||
@property
|
||||
def level_tag(self):
|
||||
return force_text(LEVEL_TAGS.get(self.level, ''), strings_only=True)
|
||||
|
||||
|
||||
class BaseStorage(object):
|
||||
"""
|
||||
|
||||
@@ -361,6 +361,15 @@ class BaseTests(object):
|
||||
['info', '', 'extra-tag debug', 'warning', 'error',
|
||||
'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={
|
||||
constants.INFO: 'info',
|
||||
constants.DEBUG: '',
|
||||
|
||||
Reference in New Issue
Block a user