98 lines
3.2 KiB
Python
98 lines
3.2 KiB
Python
from __future__ import unicode_literals
|
|
|
|
from django.apps import apps
|
|
from django.contrib.auth import get_user_model
|
|
from django.utils.translation import ugettext_lazy as _
|
|
|
|
from common import (
|
|
MayanAppConfig, menu_main, menu_object, menu_secondary, menu_tools,
|
|
menu_user
|
|
)
|
|
from common.widgets import two_state_template
|
|
from navigation import SourceColumn
|
|
|
|
from .links import (
|
|
link_events_list, link_event_types_subscriptions_list,
|
|
link_notification_mark_read, link_notification_mark_read_all,
|
|
link_user_events, link_user_notifications_list,
|
|
)
|
|
from .licenses import * # NOQA
|
|
from .widgets import event_object_link, event_type_link, event_user_link
|
|
|
|
|
|
class EventsApp(MayanAppConfig):
|
|
has_rest_api = True
|
|
has_tests = True
|
|
name = 'events'
|
|
verbose_name = _('Events')
|
|
|
|
def ready(self):
|
|
super(EventsApp, self).ready()
|
|
Action = apps.get_model(app_label='actstream', model_name='Action')
|
|
Notification = self.get_model(model_name='Notification')
|
|
StoredEventType = self.get_model(model_name='StoredEventType')
|
|
User = get_user_model()
|
|
|
|
SourceColumn(
|
|
source=Action, label=_('Timestamp'), attribute='timestamp'
|
|
)
|
|
SourceColumn(
|
|
source=Action, label=_('Actor'),
|
|
func=lambda context: event_user_link(context['object'])
|
|
)
|
|
SourceColumn(
|
|
source=Action, label=_('Event'),
|
|
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'
|
|
)
|
|
)
|
|
|
|
SourceColumn(
|
|
source=StoredEventType, label=_('Namespace'), attribute='namespace'
|
|
)
|
|
SourceColumn(
|
|
source=StoredEventType, label=_('Label'), attribute='label'
|
|
)
|
|
|
|
SourceColumn(
|
|
source=Notification, label=_('Timestamp'),
|
|
attribute='action.timestamp'
|
|
)
|
|
SourceColumn(
|
|
source=Notification, label=_('Actor'), attribute='action.actor'
|
|
)
|
|
SourceColumn(
|
|
source=Notification, label=_('Event'),
|
|
func=lambda context: event_type_link(context['object'].action)
|
|
)
|
|
SourceColumn(
|
|
source=Notification, label=_('Target'),
|
|
func=lambda context: event_object_link(context['object'].action)
|
|
)
|
|
SourceColumn(
|
|
source=Notification, label=_('Seen'),
|
|
func=lambda context: two_state_template(
|
|
state=context['object'].read
|
|
)
|
|
)
|
|
|
|
menu_main.bind_links(
|
|
links=(link_user_notifications_list,), position=99
|
|
)
|
|
menu_object.bind_links(
|
|
links=(link_notification_mark_read,), sources=(Notification,)
|
|
)
|
|
menu_object.bind_links(
|
|
links=(link_user_events,), sources=(User,)
|
|
)
|
|
menu_secondary.bind_links(
|
|
links=(link_notification_mark_read_all,),
|
|
sources=('events:user_notifications_list',)
|
|
)
|
|
menu_tools.bind_links(links=(link_events_list,))
|
|
menu_user.bind_links(links=(link_event_types_subscriptions_list,))
|