From 818cf97d5bf6d46edb78ff91d666faaae32615c9 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Mon, 20 May 2019 01:19:53 -0400 Subject: [PATCH] Split document type retention policies Signed-off-by: Roberto Rosario --- HISTORY.rst | 1 + docs/releases/3.2.rst | 1 + mayan/apps/documents/apps.py | 14 +-- mayan/apps/documents/icons.py | 1 + mayan/apps/documents/links.py | 6 ++ mayan/apps/documents/urls.py | 93 ++++++++++--------- .../documents/views/document_type_views.py | 29 ++++-- 7 files changed, 90 insertions(+), 55 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index 94a2d4808d..5bff66f757 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -657,6 +657,7 @@ - Chart updates: Show last update date and time in list view and details view. Change color scheme to match rest of project. Increase size of data points. Improve responsive settings. Redirect to the current view after queueing. +- Split document type retention policies into it own view. 3.0.3 (2018-08-17) ================== diff --git a/docs/releases/3.2.rst b/docs/releases/3.2.rst index f1efb365b3..32aabf5019 100644 --- a/docs/releases/3.2.rst +++ b/docs/releases/3.2.rst @@ -704,6 +704,7 @@ Other changes - Chart updates: Show last update date and time in list view and details view. Change color scheme to match rest of project. Increase size of data points. Improve responsive settings. Redirect to the current view after queueing. +- Split document type retention policies into it own view. Removals diff --git a/mayan/apps/documents/apps.py b/mayan/apps/documents/apps.py index fd4c59da31..151523e100 100644 --- a/mayan/apps/documents/apps.py +++ b/mayan/apps/documents/apps.py @@ -71,12 +71,13 @@ from .links import ( link_document_type_delete, link_document_type_edit, link_document_type_filename_create, link_document_type_filename_delete, link_document_type_filename_edit, link_document_type_filename_list, - link_document_type_list, link_document_type_setup, - link_document_update_page_count, link_document_version_download, - link_document_version_list, link_document_version_return_document, - link_document_version_return_list, link_document_version_revert, - link_document_version_view, link_duplicated_document_list, - link_duplicated_document_scan, link_trash_can_empty + link_document_type_list, link_document_type_policies, + link_document_type_setup, link_document_update_page_count, + link_document_version_download, link_document_version_list, + link_document_version_return_document, link_document_version_return_list, + link_document_version_revert, link_document_version_view, + link_duplicated_document_list, link_duplicated_document_scan, + link_trash_can_empty ) from .menus import menu_documents from .permissions import ( @@ -385,6 +386,7 @@ class DocumentsApp(MayanAppConfig): menu_list_facet.bind_links( links=( link_document_type_filename_list, + link_document_type_policies, link_acl_list, link_object_event_types_user_subcriptions_list, link_events_for_object, ), sources=(DocumentType,) diff --git a/mayan/apps/documents/icons.py b/mayan/apps/documents/icons.py index 2aa67dea47..7d411a30f0 100644 --- a/mayan/apps/documents/icons.py +++ b/mayan/apps/documents/icons.py @@ -149,6 +149,7 @@ icon_document_type_filename = Icon( icon_document_type_filename_create = Icon( driver_name='fontawesome', symbol='plus' ) +icon_document_type_policies = Icon(driver_name='fontawesome', symbol='times') icon_document_type_setup = icon_document_type diff --git a/mayan/apps/documents/links.py b/mayan/apps/documents/links.py index 7bc3e9f47e..d067f194d7 100644 --- a/mayan/apps/documents/links.py +++ b/mayan/apps/documents/links.py @@ -364,6 +364,12 @@ link_document_type_delete = Link( permissions=(permission_document_type_delete,), tags='dangerous', text=_('Delete'), view='documents:document_type_delete', ) +link_document_type_policies = Link( + args='resolved_object.id', + icon_class_path='mayan.apps.documents.icons.icon_document_type_policies', + permissions=(permission_document_type_edit,), + text=_('Policies'), view='documents:document_type_policies', +) link_document_type_edit = Link( args='resolved_object.id', icon_class=icon_document_type_edit, permissions=(permission_document_type_edit,), text=_('Edit'), diff --git a/mayan/apps/documents/urls.py b/mayan/apps/documents/urls.py index 268a11b10b..6d954eebb0 100644 --- a/mayan/apps/documents/urls.py +++ b/mayan/apps/documents/urls.py @@ -32,6 +32,7 @@ from .views import ( RecentAccessDocumentListView, RecentAddedDocumentListView, ScanDuplicatedDocuments ) +from .views.document_type_views import DocumentTypeDeletionPoliciesEditView from .views.favorite_document_views import ( FavoriteAddView, FavoriteDocumentListView, FavoriteRemoveView ) @@ -40,6 +41,54 @@ from .views.trashed_document_views import ( TrashedDocumentListView, TrashedDocumentRestoreView ) +urlpatterns_document_types = [ + url( + regex=r'^type/list/$', view=DocumentTypeListView.as_view(), + name='document_type_list' + ), + url( + regex=r'^type/create/$', view=DocumentTypeCreateView.as_view(), + name='document_type_create' + ), + url( + regex=r'^type/(?P\d+)/edit/$', view=DocumentTypeEditView.as_view(), + name='document_type_edit' + ), + url( + regex=r'^type/(?P\d+)/delete/$', + view=DocumentTypeDeleteView.as_view(), name='document_type_delete' + ), + url( + regex=r'^type/(?P\d+)/documents/$', + view=DocumentTypeDocumentListView.as_view(), + name='document_type_document_list' + ), + url( + regex=r'^type/(?P\d+)/filename/list/$', + view=DocumentTypeFilenameListView.as_view(), + name='document_type_filename_list' + ), + url( + regex=r'^type/filename/(?P\d+)/edit/$', + view=DocumentTypeFilenameEditView.as_view(), + name='document_type_filename_edit' + ), + url( + regex=r'^type/filename/(?P\d+)/delete/$', + view=DocumentTypeFilenameDeleteView.as_view(), + name='document_type_filename_delete' + ), + url( + regex=r'^type/(?P\d+)/filename/create/$', + view=DocumentTypeFilenameCreateView.as_view(), + name='document_type_filename_create' + ), + url( + regex=r'^type/(?P\d+)/deletion_policies/$', + view=DocumentTypeDeletionPoliciesEditView.as_view(), + name='document_type_policies' + ), +] urlpatterns_favorite_documents = [ url( @@ -275,49 +324,6 @@ urlpatterns = [ name='document_page_view_reset' ), - # Admin views - url( - regex=r'^type/list/$', view=DocumentTypeListView.as_view(), - name='document_type_list' - ), - url( - regex=r'^type/create/$', view=DocumentTypeCreateView.as_view(), - name='document_type_create' - ), - url( - regex=r'^type/(?P\d+)/edit/$', view=DocumentTypeEditView.as_view(), - name='document_type_edit' - ), - url( - regex=r'^type/(?P\d+)/delete/$', - view=DocumentTypeDeleteView.as_view(), name='document_type_delete' - ), - url( - regex=r'^type/(?P\d+)/documents/$', - view=DocumentTypeDocumentListView.as_view(), - name='document_type_document_list' - ), - url( - regex=r'^type/(?P\d+)/filename/list/$', - view=DocumentTypeFilenameListView.as_view(), - name='document_type_filename_list' - ), - url( - regex=r'^type/filename/(?P\d+)/edit/$', - view=DocumentTypeFilenameEditView.as_view(), - name='document_type_filename_edit' - ), - url( - regex=r'^type/filename/(?P\d+)/delete/$', - view=DocumentTypeFilenameDeleteView.as_view(), - name='document_type_filename_delete' - ), - url( - regex=r'^type/(?P\d+)/filename/create/$', - view=DocumentTypeFilenameCreateView.as_view(), - name='document_type_filename_create' - ), - # Tools url( @@ -326,6 +332,7 @@ urlpatterns = [ name='duplicated_document_scan' ), ] +urlpatterns.extend(urlpatterns_document_types) urlpatterns.extend(urlpatterns_favorite_documents) urlpatterns.extend(urlpatterns_trashed_documents) diff --git a/mayan/apps/documents/views/document_type_views.py b/mayan/apps/documents/views/document_type_views.py index c23c57f6a4..228443348c 100644 --- a/mayan/apps/documents/views/document_type_views.py +++ b/mayan/apps/documents/views/document_type_views.py @@ -80,10 +80,7 @@ class DocumentTypeListView(SingleObjectListView): class DocumentTypeCreateView(SingleObjectCreateView): - fields = ( - 'label', 'trash_time_period', 'trash_time_unit', 'delete_time_period', - 'delete_time_unit' - ) + fields = ('label',) model = DocumentType post_action_redirect = reverse_lazy(viewname='documents:document_type_list') view_permission = permission_document_type_create @@ -112,15 +109,35 @@ class DocumentTypeDeleteView(SingleObjectDeleteView): } -class DocumentTypeEditView(SingleObjectEditView): +class DocumentTypeDeletionPoliciesEditView(SingleObjectEditView): fields = ( - 'label', 'trash_time_period', 'trash_time_unit', 'delete_time_period', + 'trash_time_period', 'trash_time_unit', 'delete_time_period', 'delete_time_unit' ) model = DocumentType object_permission = permission_document_type_edit post_action_redirect = reverse_lazy(viewname='documents:document_type_list') + def get_extra_context(self): + return { + 'object': self.get_object(), + 'title': _( + 'Deletion policies for document type: %s' + ) % self.get_object(), + } + + def get_save_extra_data(self): + return { + '_user': self.request.user, + } + + +class DocumentTypeEditView(SingleObjectEditView): + fields = ('label',) + model = DocumentType + object_permission = permission_document_type_edit + post_action_redirect = reverse_lazy(viewname='documents:document_type_list') + def get_extra_context(self): return { 'object': self.get_object(),