Backport support for global and object event notification. GitLab issue #262.

Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
Roberto Rosario
2017-09-17 03:12:40 -04:00
parent c4c0d4a007
commit f0baa16cde
38 changed files with 1274 additions and 159 deletions
+31 -4
View File
@@ -23,7 +23,11 @@ from converter.permissions import (
permission_transformation_delete, permission_transformation_edit,
permission_transformation_view,
)
from events.links import link_events_for_object
from events import ModelEventType
from events.links import (
link_events_for_object, link_object_event_types_user_subcriptions_list,
link_object_event_types_user_subcriptions_list_with_icon
)
from events.permissions import permission_events_view
from mayan.celery import app
from mayan_statistics.classes import StatisticNamespace, CharJSLine
@@ -36,6 +40,12 @@ from .dashboard_widgets import (
widget_new_documents_this_month, widget_pages_per_month,
widget_total_documents
)
from .events import (
event_document_create, event_document_download,
event_document_properties_edit, event_document_type_change,
event_document_new_version, event_document_version_revert,
event_document_view
)
from .handlers import (
create_default_document_type, handler_scan_duplicates_for
)
@@ -142,6 +152,19 @@ class DocumentsApp(MayanAppConfig):
label=_('MIME type'), name='versions__mimetype', type_name='field'
)
ModelEventType.register(
model=DocumentType, event_types=(
event_document_create,
)
)
ModelEventType.register(
model=Document, event_types=(
event_document_download, event_document_properties_edit,
event_document_type_change, event_document_new_version,
event_document_version_revert, event_document_view
)
)
ModelPermission.register(
model=Document, permissions=(
permission_acl_edit, permission_acl_view,
@@ -389,7 +412,8 @@ class DocumentsApp(MayanAppConfig):
menu_object.bind_links(
links=(
link_document_type_edit, link_document_type_filename_list,
link_acl_list, link_document_type_delete
link_acl_list, link_object_event_types_user_subcriptions_list,
link_document_type_delete
), sources=(DocumentType,)
)
menu_object.bind_links(
@@ -446,8 +470,11 @@ class DocumentsApp(MayanAppConfig):
links=(link_document_properties,), sources=(Document,), position=2
)
menu_facet.bind_links(
links=(link_events_for_object, link_document_version_list,),
sources=(Document,), position=2
links=(
link_events_for_object,
link_object_event_types_user_subcriptions_list_with_icon,
link_document_version_list,
), sources=(Document,), position=2
)
menu_facet.bind_links(links=(link_document_pages,), sources=(Document,))
+17 -18
View File
@@ -2,29 +2,28 @@ from __future__ import absolute_import, unicode_literals
from django.utils.translation import ugettext_lazy as _
from events.classes import Event
from events import EventTypeNamespace
event_document_create = Event(
name='documents_document_create', label=_('Document created')
namespace = EventTypeNamespace(name='documents', label=_('Documents'))
event_document_create = namespace.add_event_type(
name='document_create', label=_('Document created')
)
event_document_download = Event(
name='documents_document_download',
label=_('Document downloaded')
event_document_download = namespace.add_event_type(
name='document_download', label=_('Document downloaded')
)
event_document_properties_edit = Event(
name='documents_document_edit', label=_('Document properties edited')
event_document_properties_edit = namespace.add_event_type(
name='document_edit', label=_('Document properties edited')
)
event_document_type_change = Event(
name='documents_document_type_change', label=_('Document type changed')
event_document_type_change = namespace.add_event_type(
name='document_type_change', label=_('Document type changed')
)
event_document_new_version = Event(
name='documents_document_new_version', label=_('New version uploaded')
event_document_new_version = namespace.add_event_type(
name='document_new_version', label=_('New version uploaded')
)
event_document_version_revert = Event(
name='documents_document_version_revert',
label=_('Document version reverted')
event_document_version_revert = namespace.add_event_type(
name='document_version_revert', label=_('Document version reverted')
)
event_document_view = Event(
name='documents_document_view',
label=_('Document viewed')
event_document_view = namespace.add_event_type(
name='document_view', label=_('Document viewed')
)
+6 -2
View File
@@ -222,9 +222,13 @@ class Document(models.Model):
if new_document:
if user:
self.add_as_recent_document_for_user(user)
event_document_create.commit(actor=user, target=self)
event_document_create.commit(
actor=user, target=self, action_object=self.document_type
)
else:
event_document_create.commit(target=self)
event_document_create.commit(
target=self, action_object=self.document_type
)
else:
if _commit_events:
event_document_properties_edit.commit(actor=user, target=self)
+2 -2
View File
@@ -64,7 +64,7 @@ class DocumentEventsTestCase(GenericDocumentViewTestCase):
event = Action.objects.any(obj=self.document).first()
self.assertEqual(event.verb, event_document_download.name)
self.assertEqual(event.verb, event_document_download.id)
self.assertEqual(event.target, self.document)
self.assertEqual(event.actor, self.user)
@@ -98,6 +98,6 @@ class DocumentEventsTestCase(GenericDocumentViewTestCase):
event = Action.objects.any(obj=self.document).first()
self.assertEqual(event.verb, event_document_view.name)
self.assertEqual(event.verb, event_document_view.id)
self.assertEqual(event.target, self.document)
self.assertEqual(event.actor, self.user)