Skip to content

Instantly share code, notes, and snippets.

@claudep
Created September 25, 2015 18:21
Show Gist options
  • Save claudep/aa1edac079866a482510 to your computer and use it in GitHub Desktop.
Save claudep/aa1edac079866a482510 to your computer and use it in GitHub Desktop.

Revisions

  1. claudep renamed this gist Sep 25, 2015. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  2. claudep created this gist Sep 25, 2015.
    121 changes: 121 additions & 0 deletions gistfile1.txt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,121 @@
    diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py
    index c2c4d84..bdce73b 100644
    --- a/django/contrib/admin/options.py
    +++ b/django/contrib/admin/options.py
    @@ -1,3 +1,5 @@
    +from __future__ import unicode_literals
    +
    import copy
    import operator
    from collections import OrderedDict
    @@ -38,7 +40,7 @@ from django.template.response import SimpleTemplateResponse, TemplateResponse
    from django.utils import six
    from django.utils.decorators import method_decorator
    from django.utils.encoding import force_text, python_2_unicode_compatible
    -from django.utils.html import escape, escapejs
    +from django.utils.html import escape, escapejs, format_html
    from django.utils.http import urlencode, urlquote
    from django.utils.safestring import mark_safe
    from django.utils.text import capfirst, get_text_list
    @@ -1063,7 +1065,7 @@ class ModelAdmin(BaseModelAdmin):
    )
    msg_dict = {
    'name': force_text(opts.verbose_name),
    - 'obj': force_text('<a href="{0}">{1}</a>').format(urlquote(obj_url), escape(obj)),
    + 'obj': format_html('<a href="{0}">{1}</a>', urlquote(obj_url), obj),
    }
    # Here, we distinguish between different save types by checking for
    # the presence of keys in request.POST.
    @@ -1081,7 +1083,10 @@ class ModelAdmin(BaseModelAdmin):
    })

    elif "_continue" in request.POST:
    - msg = _('The %(name)s "%(obj)s" was added successfully. You may edit it again below.') % msg_dict
    + msg = format_html(
    + _('The {name} "{obj}" was added successfully. You may edit it again below.'),
    + **msg_dict
    + )
    self.message_user(request, mark_safe(msg), messages.SUCCESS)
    if post_url_continue is None:
    post_url_continue = obj_url
    @@ -1092,14 +1097,20 @@ class ModelAdmin(BaseModelAdmin):
    return HttpResponseRedirect(post_url_continue)

    elif "_addanother" in request.POST:
    - msg = _('The %(name)s "%(obj)s" was added successfully. You may add another %(name)s below.') % msg_dict
    + msg = format_html(
    + _('The {name} "{obj}" was added successfully. You may add another {name} below.'),
    + **msg_dict
    + )
    self.message_user(request, mark_safe(msg), messages.SUCCESS)
    redirect_url = request.path
    redirect_url = add_preserved_filters({'preserved_filters': preserved_filters, 'opts': opts}, redirect_url)
    return HttpResponseRedirect(redirect_url)

    else:
    - msg = _('The %(name)s "%(obj)s" was added successfully.') % msg_dict
    + msg = format_html(
    + _('The {name} "{obj}" was added successfully.'),
    + **msg_dict
    + )
    self.message_user(request, mark_safe(msg), messages.SUCCESS)
    return self.response_post_save_add(request, obj)

    @@ -1127,18 +1138,24 @@ class ModelAdmin(BaseModelAdmin):

    msg_dict = {
    'name': force_text(opts.verbose_name),
    - 'obj': force_text('<a href="{0}">{1}</a>').format(urlquote(request.path), escape(obj)),
    + 'obj': format_html('<a href="{0}">{1}</a>', urlquote(request.path), obj),
    }
    if "_continue" in request.POST:
    - msg = _('The %(name)s "%(obj)s" was changed successfully. You may edit it again below.') % msg_dict
    - self.message_user(request, mark_safe(msg), messages.SUCCESS)
    + msg = format_html(
    + _('The {name} "{obj}" was changed successfully. You may edit it again below.'),
    + **msg_dict
    + )
    + self.message_user(request, msg, messages.SUCCESS)
    redirect_url = request.path
    redirect_url = add_preserved_filters({'preserved_filters': preserved_filters, 'opts': opts}, redirect_url)
    return HttpResponseRedirect(redirect_url)

    elif "_saveasnew" in request.POST:
    - msg = _('The %(name)s "%(obj)s" was added successfully. You may edit it again below.') % msg_dict
    - self.message_user(request, mark_safe(msg), messages.SUCCESS)
    + msg = format_html(
    + _('The {name} "{obj}" was added successfully. You may edit it again below.'),
    + **msg_dict
    + )
    + self.message_user(request, msg, messages.SUCCESS)
    redirect_url = reverse('admin:%s_%s_change' %
    (opts.app_label, opts.model_name),
    args=(pk_value,),
    @@ -1147,8 +1164,11 @@ class ModelAdmin(BaseModelAdmin):
    return HttpResponseRedirect(redirect_url)

    elif "_addanother" in request.POST:
    - msg = _('The %(name)s "%(obj)s" was changed successfully. You may add another %(name)s below.') % msg_dict
    - self.message_user(request, mark_safe(msg), messages.SUCCESS)
    + msg = format_html(
    + _('The {name} "{obj}" was changed successfully. You may add another {name} below.'),
    + **msg_dict
    + )
    + self.message_user(request, msg, messages.SUCCESS)
    redirect_url = reverse('admin:%s_%s_add' %
    (opts.app_label, opts.model_name),
    current_app=self.admin_site.name)
    @@ -1156,8 +1176,11 @@ class ModelAdmin(BaseModelAdmin):
    return HttpResponseRedirect(redirect_url)

    else:
    - msg = _('The %(name)s "%(obj)s" was changed successfully.') % msg_dict
    - self.message_user(request, mark_safe(msg), messages.SUCCESS)
    + msg = format_html(
    + _('The {name} "{obj}" was changed successfully.'),
    + **msg_dict
    + )
    + self.message_user(request, msg, messages.SUCCESS)
    return self.response_post_save_change(request, obj)

    def response_post_save_add(self, request, obj):