import json from django.conf import settings try: from django.core import urlresolvers except ImportError: from django import urls as urlresolvers try: from django.urls.exceptions import NoReverseMatch except ImportError: from django.core.urlresolvers import NoReverseMatch MAX = 75 class LogEntryAdminMixin(object): def created(self, obj): return obj.timestamp.strftime('%Y-%m-%d %H:%M:%S') created.short_description = 'Created' def user_url(self, obj): if obj.actor: app_label, model = settings.AUTH_USER_MODEL.split('.') viewname = 'admin:%s_%s_change' % (app_label, model.lower()) link = urlresolvers.reverse(viewname, args=[obj.actor.id]) return u'%s' % (link, obj.actor) return 'system' user_url.allow_tags = True user_url.short_description = 'User' def resource_url(self, obj): app_label, model = obj.content_type.app_label, obj.content_type.model viewname = 'admin:%s_%s_change' % (app_label, model) try: args = [obj.object_pk] if obj.object_id is None else [obj.object_id] link = urlresolvers.reverse(viewname, args=args) except NoReverseMatch: return obj.object_repr else: return u'%s' % (link, obj.object_repr) resource_url.allow_tags = True resource_url.short_description = 'Resource' def msg_short(self, obj): if obj.action == 2: return '' # delete changes = json.loads(obj.changes) s = '' if len(changes) == 1 else 's' fields = ', '.join(changes.keys()) if len(fields) > MAX: i = fields.rfind(' ', 0, MAX) fields = fields[:i] + ' ..' return '%d change%s: %s' % (len(changes), s, fields) msg_short.short_description = 'Changes' def msg(self, obj): if obj.action == 2: return '' # delete changes = json.loads(obj.changes) msg = '
| # | Field | From | To |
|---|---|---|---|
| %s | %s | %s | %s |