diff options
Diffstat (limited to 'django')
| -rw-r--r-- | django/contrib/admin/options.py | 22 |
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): """ |
