summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorPreston Holmes <preston@ptone.com>2012-11-17 22:53:31 +0100
committerPreston Holmes <preston@ptone.com>2012-11-19 16:03:09 -0800
commitedf7ad36faab8d45aafe1f96feaf46794de22fc1 (patch)
treecbafab6d93982161f9d1520e4781a7452c0e9987 /django
parent8b659e439b51953064a7a79924b4066e08d7127d (diff)
Fixed #18658 -- Improved ModelAdmin.message_user API
Thanks to Lowe Thiderman for the patch and tests
Diffstat (limited to 'django')
-rw-r--r--django/contrib/admin/options.py22
1 files changed, 20 insertions, 2 deletions
diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py
index 19c212db9a..64d71fe1af 100644
--- a/django/contrib/admin/options.py
+++ b/django/contrib/admin/options.py
@@ -691,12 +691,30 @@ class ModelAdmin(BaseModelAdmin):
change_message = ' '.join(change_message)
return change_message or _('No fields changed.')
- def message_user(self, request, message):
+ def message_user(self, request, message, level=messages.INFO, extra_tags='',
+ fail_silently=False):
"""
Send a message to the user. The default implementation
posts a message using the django.contrib.messages backend.
+
+ Exposes almost the same API as messages.add_message(), but accepts the
+ positional arguments in a different order to maintain backwards
+ compatibility. For convenience, it accepts the `level` argument as
+ a string rather than the ususal level number.
"""
- messages.info(request, message)
+
+ if not isinstance(level, int):
+ # attempt to get the level if passed a string
+ try:
+ level = getattr(messages.constants, level.upper())
+ except AttributeError:
+ levels = messages.constants.DEFAULT_TAGS.values()
+ levels_repr = ', '.join('`%s`' % l for l in levels)
+ raise ValueError('Bad message level string: `%s`. '
+ 'Possible values are: %s' % (level, levels_repr))
+
+ messages.add_message(request, level, message, extra_tags=extra_tags,
+ fail_silently=fail_silently)
def save_form(self, request, form, change):
"""