diff --git a/mayan/apps/events/apps.py b/mayan/apps/events/apps.py index abbce94d7d..5e0b765167 100644 --- a/mayan/apps/events/apps.py +++ b/mayan/apps/events/apps.py @@ -9,13 +9,17 @@ from rest_api.classes import APIEndPoint from .links import link_events_list from .licenses import * # NOQA -from .widgets import event_type_link +from .widgets import event_object_link, event_type_link def event_actor(action): return _('System') if action.actor == action.target else action.actor +def event_action_object(action): + return action.action_object if action.action_object != action.target and action.action_object else '' + + class EventsApp(MayanAppConfig): has_tests = True name = 'events' @@ -38,5 +42,11 @@ class EventsApp(MayanAppConfig): source=Action, label=_('Verb'), func=lambda context: event_type_link(context['object']) ) + SourceColumn( + source=Action, label=_('Action object'), + func=lambda context: event_object_link( + entry=context['object'], attribute='action_object' + ) + ) menu_tools.bind_links(links=(link_events_list,)) diff --git a/mayan/apps/events/widgets.py b/mayan/apps/events/widgets.py index e2cb52cf1c..075a1edd76 100644 --- a/mayan/apps/events/widgets.py +++ b/mayan/apps/events/widgets.py @@ -6,15 +6,26 @@ from django.utils.safestring import mark_safe from .classes import Event -def event_object_link(entry): - return mark_safe('%(label)s' % { - 'url': entry.target.get_absolute_url() if entry.target else '#', - 'label': entry.target} +def event_object_link(entry, attribute='target'): + obj = getattr(entry, attribute) + + if obj: + obj_type = '{}: '.format(obj._meta.verbose_name) + else: + obj_type = '' + + return mark_safe( + '%(obj_type)s%(label)s' % { + 'url': obj.get_absolute_url() if obj else '#', + 'label': obj or '', 'obj_type': obj_type + } ) def event_type_link(entry): - return mark_safe('%(label)s' % { - 'url': reverse('events:events_by_verb', kwargs={'verb': entry.verb}), - 'label': Event.get_label(entry.verb)} + return mark_safe( + '%(label)s' % { + 'url': reverse('events:events_by_verb', kwargs={'verb': entry.verb}), + 'label': Event.get_label(entry.verb) + } )