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(),