From cd76b1fd4ab7c7eea7b90cf45083a9b75ba54934 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Wed, 15 Aug 2018 03:18:46 -0400 Subject: [PATCH] Add new document app events: document type created and document type edited. Add link to document type events. Signed-off-by: Roberto Rosario --- HISTORY.rst | 3 +++ mayan/apps/documents/apps.py | 5 ++++- mayan/apps/documents/events.py | 13 +++++++++++-- mayan/apps/documents/models.py | 18 ++++++++++++++++++ .../documents/views/document_type_views.py | 10 ++++++++++ 5 files changed, 46 insertions(+), 3 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index 033f27a10b..13fb1a84fa 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -35,6 +35,9 @@ - Add support for template subtitles. - Make sure the on entry action of the initial state of workflows executes on document creation. +- Add new document app events: document type created and document type + edited. +- Add link to document type events. 3.0.1 (2018-07-08) ================= diff --git a/mayan/apps/documents/apps.py b/mayan/apps/documents/apps.py index b5076efd10..a213e9124f 100644 --- a/mayan/apps/documents/apps.py +++ b/mayan/apps/documents/apps.py @@ -42,6 +42,7 @@ from .dashboard_widgets import ( from .events import ( event_document_create, event_document_download, event_document_properties_edit, event_document_type_change, + event_document_type_created, event_document_type_edited, event_document_new_version, event_document_version_revert, event_document_view ) @@ -149,6 +150,7 @@ class DocumentsApp(MayanAppConfig): ModelEventType.register( model=DocumentType, event_types=( event_document_create, + event_document_type_edited, ) ) ModelEventType.register( @@ -408,7 +410,8 @@ class DocumentsApp(MayanAppConfig): links=( link_document_type_edit, link_document_type_filename_list, link_acl_list, link_object_event_types_user_subcriptions_list, - link_document_type_delete + link_document_type_delete, + link_events_for_object, ), sources=(DocumentType,) ) menu_object.bind_links( diff --git a/mayan/apps/documents/events.py b/mayan/apps/documents/events.py index 16a0bdc3bb..9f24d1f1b0 100644 --- a/mayan/apps/documents/events.py +++ b/mayan/apps/documents/events.py @@ -12,14 +12,23 @@ event_document_create = namespace.add_event_type( event_document_download = namespace.add_event_type( name='document_download', label=_('Document downloaded') ) +event_document_new_version = namespace.add_event_type( + name='document_new_version', label=_('New version uploaded') +) event_document_properties_edit = namespace.add_event_type( name='document_edit', label=_('Document properties edited') ) +# The type of an existing document is changed to another type event_document_type_change = namespace.add_event_type( name='document_type_change', label=_('Document type changed') ) -event_document_new_version = namespace.add_event_type( - name='document_new_version', label=_('New version uploaded') +# A document type is created +event_document_type_created = namespace.add_event_type( + name='document_type_created', label=_('Document type created') +) +# An existing document type is modified +event_document_type_edited = namespace.add_event_type( + name='document_type_edit', label=_('Document type edited') ) event_document_version_revert = namespace.add_event_type( name='document_version_revert', label=_('Document version reverted') diff --git a/mayan/apps/documents/models.py b/mayan/apps/documents/models.py index 6fbdffda32..a51d1a674e 100644 --- a/mayan/apps/documents/models.py +++ b/mayan/apps/documents/models.py @@ -31,6 +31,7 @@ from mimetype.api import get_mimetype from .events import ( event_document_create, event_document_new_version, event_document_properties_edit, event_document_type_change, + event_document_type_created, event_document_type_edited, event_document_version_revert ) from .literals import DEFAULT_DELETE_PERIOD, DEFAULT_DELETE_TIME_UNIT @@ -148,6 +149,23 @@ class DocumentType(models.Model): ) raise + def save(self, *args, **kwargs): + user = kwargs.pop('_user', None) + created = not self.pk + + result = super(DocumentType, self).save(*args, **kwargs) + + if created: + event_document_type_created.commit( + actor=user, target=self + ) + else: + event_document_type_edited.commit( + actor=user, target=self + ) + + return result + @python_2_unicode_compatible class Document(models.Model): diff --git a/mayan/apps/documents/views/document_type_views.py b/mayan/apps/documents/views/document_type_views.py index 8705554194..c51bcb56c4 100644 --- a/mayan/apps/documents/views/document_type_views.py +++ b/mayan/apps/documents/views/document_type_views.py @@ -67,6 +67,11 @@ class DocumentTypeCreateView(SingleObjectCreateView): 'title': _('Create document type'), } + def get_save_extra_data(self): + return { + '_user': self.request.user, + } + class DocumentTypeDeleteView(SingleObjectDeleteView): model = DocumentType @@ -96,6 +101,11 @@ class DocumentTypeEditView(SingleObjectEditView): 'title': _('Edit document type: %s') % self.get_object(), } + def get_save_extra_data(self): + return { + '_user': self.request.user, + } + class DocumentTypeFilenameCreateView(SingleObjectCreateView): form_class = DocumentTypeFilenameForm_create