2 |
2 |
|
3 |
3 |
import django.contrib.admin as admin
|
4 |
4 |
from django.contrib.contenttypes.models import ContentType
|
5 |
|
from django.utils.html import escape
|
|
5 |
from django.utils.html import format_html, escape, mark_safe
|
6 |
6 |
from django.db import models
|
7 |
7 |
from django.utils.encoding import force_text
|
8 |
8 |
from django.utils.translation import ugettext_lazy as _
|
... | ... | |
91 |
91 |
|
92 |
92 |
def _tag(self, entry):
|
93 |
93 |
name = entry.tag.name.replace(u'-', u'\u2011')
|
94 |
|
res = u'<a href="?tag__id__exact={0}">{1}</a>'.format(
|
|
94 |
res = format_html('<a href="?tag__id__exact={0}">{1}</a>',
|
95 |
95 |
escape(entry.tag.id), escape(name))
|
96 |
96 |
return res
|
97 |
|
_tag.allow_tags = True
|
98 |
97 |
_tag.short_description = _('tag')
|
99 |
98 |
|
100 |
99 |
def ip(self, entry):
|
101 |
100 |
'''Search and return any associated stringdata whose tag is "ip"'''
|
102 |
101 |
for stringdata in entry.stringdata_set.all():
|
103 |
102 |
if stringdata.tag.name == 'ip':
|
104 |
|
return u'<a href="?stringdata__tag__id={tag_id}&' \
|
105 |
|
u'stringdata__content={ip}">{ip}</a>'.format(
|
|
103 |
return format_html('<a href="?stringdata__tag__id={tag_id}&' \
|
|
104 |
'stringdata__content={ip}">{ip}</a>',
|
106 |
105 |
tag_id=stringdata.tag.id, ip=stringdata.content)
|
107 |
106 |
return _('None')
|
108 |
107 |
ip.short_description = _('IP')
|
109 |
|
ip.allow_tags = True
|
110 |
108 |
|
111 |
109 |
def user(self, entry):
|
112 |
110 |
'''Search and return any associated objectdata whose tag is "user"'''
|
113 |
111 |
for objectdata in entry.objectdata_set.all():
|
114 |
112 |
if objectdata.tag.name == 'user':
|
115 |
|
return self.object_filter_link(objectdata) + \
|
116 |
|
self.object_link(objectdata)
|
|
113 |
return format_html(self.object_filter_link(objectdata) + \
|
|
114 |
self.object_link(objectdata))
|
117 |
115 |
return _('None')
|
118 |
|
user.allow_tags = True
|
119 |
116 |
user.short_description = _('User')
|
120 |
117 |
|
121 |
118 |
def object_filter_link(self, objectdata):
|
... | ... | |
146 |
143 |
ctx = entry.message_context()
|
147 |
144 |
formatter = ModelAdminFormatter(model_admin=self, filter_link=False)
|
148 |
145 |
message = formatter.format(escape(entry.template.content), **ctx)
|
149 |
|
return u'<span>%s</span>' % message
|
150 |
|
message_for_change.allow_tags = True
|
|
146 |
return format_html('<span>{}</span>', mark_safe(message))
|
151 |
147 |
message_for_change.short_description = _('Message')
|
152 |
148 |
|
153 |
149 |
def message_for_list(self, entry):
|
154 |
150 |
ctx = entry.message_context()
|
155 |
151 |
formatter = ModelAdminFormatter(model_admin=self)
|
156 |
152 |
message = formatter.format(entry.template.content, **ctx)
|
157 |
|
return u'<span>{0}</span>'.format(message)
|
158 |
|
message_for_list.allow_tags = True
|
|
153 |
return format_html('<span>{}</span>', mark_safe(message))
|
159 |
154 |
message_for_list.short_description = _('Message')
|
160 |
155 |
message_for_list.admin_order_field = 'message'
|
161 |
156 |
|
162 |
|
-
|