django 2.2: use format_html instead of allow_tags (#54257)

This commit is contained in:
Emmanuel Cazenave 2021-05-25 12:22:47 +02:00
parent b3de8372d5
commit bc58bd50f1
1 changed files with 8 additions and 13 deletions

View File

@ -2,7 +2,7 @@ from string import Formatter
import django.contrib.admin as admin
from django.contrib.contenttypes.models import ContentType
from django.utils.html import escape
from django.utils.html import format_html, escape, mark_safe
from django.db import models
from django.utils.encoding import force_text
from django.utils.translation import ugettext_lazy as _
@ -91,31 +91,28 @@ class JournalAdmin(admin.ModelAdmin):
def _tag(self, entry):
name = entry.tag.name.replace(u'-', u'\u2011')
res = u'<a href="?tag__id__exact={0}">{1}</a>'.format(
res = format_html('<a href="?tag__id__exact={0}">{1}</a>',
escape(entry.tag.id), escape(name))
return res
_tag.allow_tags = True
_tag.short_description = _('tag')
def ip(self, entry):
'''Search and return any associated stringdata whose tag is "ip"'''
for stringdata in entry.stringdata_set.all():
if stringdata.tag.name == 'ip':
return u'<a href="?stringdata__tag__id={tag_id}&' \
u'stringdata__content={ip}">{ip}</a>'.format(
return format_html('<a href="?stringdata__tag__id={tag_id}&' \
'stringdata__content={ip}">{ip}</a>',
tag_id=stringdata.tag.id, ip=stringdata.content)
return _('None')
ip.short_description = _('IP')
ip.allow_tags = True
def user(self, entry):
'''Search and return any associated objectdata whose tag is "user"'''
for objectdata in entry.objectdata_set.all():
if objectdata.tag.name == 'user':
return self.object_filter_link(objectdata) + \
self.object_link(objectdata)
return format_html(self.object_filter_link(objectdata) + \
self.object_link(objectdata))
return _('None')
user.allow_tags = True
user.short_description = _('User')
def object_filter_link(self, objectdata):
@ -146,16 +143,14 @@ class JournalAdmin(admin.ModelAdmin):
ctx = entry.message_context()
formatter = ModelAdminFormatter(model_admin=self, filter_link=False)
message = formatter.format(escape(entry.template.content), **ctx)
return u'<span>%s</span>' % message
message_for_change.allow_tags = True
return format_html('<span>{}</span>', mark_safe(message))
message_for_change.short_description = _('Message')
def message_for_list(self, entry):
ctx = entry.message_context()
formatter = ModelAdminFormatter(model_admin=self)
message = formatter.format(entry.template.content, **ctx)
return u'<span>{0}</span>'.format(message)
message_for_list.allow_tags = True
return format_html('<span>{}</span>', mark_safe(message))
message_for_list.short_description = _('Message')
message_for_list.admin_order_field = 'message'