diff --git a/mayan/apps/documents/apps.py b/mayan/apps/documents/apps.py index 7ce5749a36..2c8477dafd 100644 --- a/mayan/apps/documents/apps.py +++ b/mayan/apps/documents/apps.py @@ -16,6 +16,7 @@ from common import ( from common.api import register_maintenance_links from common.classes import ModelAttribute from common.utils import encapsulate, validate_path +from converter.links import link_transformation_list from converter.permissions import ( PERMISSION_TRANSFORMATION_CREATE, PERMISSION_TRANSFORMATION_DELETE, PERMISSION_TRANSFORMATION_EDIT, @@ -42,9 +43,9 @@ from .links import ( link_document_page_navigation_next, link_document_page_navigation_previous, link_document_page_return, link_document_page_rotate_left, link_document_page_rotate_right, - link_document_page_transformation_list, link_document_page_view, - link_document_page_view_reset, link_document_page_zoom_in, - link_document_page_zoom_out, link_document_preview, link_document_print, + link_document_page_view, link_document_page_view_reset, + link_document_page_zoom_in, link_document_page_zoom_out, + link_document_pages, link_document_preview, link_document_print, link_document_properties, link_document_type_create, link_document_type_delete, link_document_type_edit, link_document_type_filename_create, link_document_type_filename_delete, @@ -129,6 +130,7 @@ class DocumentsApp(apps.AppConfig): menu_facet.bind_links(links=[link_document_content], sources=[Document], position=1) menu_facet.bind_links(links=[link_document_properties], sources=[Document], position=2) menu_facet.bind_links(links=[link_document_events_view, link_document_version_list], sources=[Document], position=2) + menu_facet.bind_links(links=[link_document_pages], sources=[Document]) # Document actions menu_object.bind_links(links=[link_document_version_revert, link_document_version_download], sources=[DocumentVersion]) @@ -137,7 +139,8 @@ class DocumentsApp(apps.AppConfig): # Document pages menu_facet.bind_links(links=[link_document_page_rotate_left, link_document_page_rotate_right, link_document_page_zoom_in, link_document_page_zoom_out, link_document_page_view_reset], sources=['documents:document_page_view']) menu_facet.bind_links(links=[link_document_page_return, link_document_page_view], sources=[DocumentPage]) - menu_facet.bind_links(links=[link_document_page_navigation_first, link_document_page_navigation_previous, link_document_page_navigation_next, link_document_page_navigation_last, link_document_page_transformation_list], sources=[DocumentPage]) + menu_facet.bind_links(links=[link_document_page_navigation_first, link_document_page_navigation_previous, link_document_page_navigation_next, link_document_page_navigation_last, link_transformation_list], sources=[DocumentPage]) + menu_object.bind_links(links=[link_transformation_list], sources=[DocumentPage]) namespace = StatisticNamespace(name='documents', label=_('Documents')) namespace.add_statistic(DocumentStatistics(name='document_stats', label=_('Document tendencies'))) diff --git a/mayan/apps/documents/links.py b/mayan/apps/documents/links.py index b160208eb3..8b2e9030ca 100644 --- a/mayan/apps/documents/links.py +++ b/mayan/apps/documents/links.py @@ -47,6 +47,7 @@ link_document_events_view = Link(permissions=[PERMISSION_EVENTS_VIEW], text=_('E link_document_preview = Link(permissions=[PERMISSION_DOCUMENT_VIEW], text=_('Preview'), view='documents:document_preview', args='object.id') link_document_properties = Link(permissions=[PERMISSION_DOCUMENT_VIEW], text=_('Properties'), view='documents:document_properties', args='object.id') link_document_version_list = Link(permissions=[PERMISSION_DOCUMENT_VIEW], text=_('Versions'), view='documents:document_version_list', args='object.pk') +link_document_pages = Link(permissions=[PERMISSION_DOCUMENT_VIEW], text=_('Pages'), view='documents:document_pages', args='resolved_object.pk') # Actions link_document_clear_transformations = Link(permissions=[PERMISSION_TRANSFORMATION_DELETE], text=_('Clear transformations'), view='documents:document_clear_transformations', args='object.id') @@ -75,8 +76,6 @@ link_clear_image_cache = Link( ) # Document pages -link_document_page_transformation_list = Link(kwargs={'app_label': '"documents"', 'model': '"documentpage"', 'object_id': 'resolved_object.pk'}, permissions=[PERMISSION_TRANSFORMATION_VIEW], text=_('Transformations'), view='converter:transformation_list') - link_document_page_navigation_first = Link(conditional_disable=is_first_page, icon='fa fa-step-backward', keep_query=True, permissions=[PERMISSION_DOCUMENT_VIEW], text=_('First page'), view='documents:document_page_navigation_first', args='resolved_object.pk') link_document_page_navigation_last = Link(conditional_disable=is_last_page, icon='fa fa-step-forward', keep_query=True, text=_('Last page'), permissions=[PERMISSION_DOCUMENT_VIEW], view='documents:document_page_navigation_last', args='resolved_object.pk') link_document_page_navigation_previous = Link(conditional_disable=is_first_page, icon='fa fa-arrow-left', keep_query=True, permissions=[PERMISSION_DOCUMENT_VIEW], text=_('Previous page'), view='documents:document_page_navigation_previous', args='resolved_object.pk') diff --git a/mayan/apps/documents/urls.py b/mayan/apps/documents/urls.py index 79d2d18552..1aa185d5bb 100644 --- a/mayan/apps/documents/urls.py +++ b/mayan/apps/documents/urls.py @@ -10,7 +10,9 @@ from .api_views import ( APIRecentDocumentListView ) from .settings import PRINT_SIZE, DISPLAY_SIZE -from .views import DocumentListView, RecentDocumentListView +from .views import ( + DocumentListView, DocumentPageListView, RecentDocumentListView +) urlpatterns = patterns( 'documents.views', @@ -43,6 +45,7 @@ urlpatterns = patterns( url(r'^document/version/(?P\d+)/revert/$', 'document_version_revert', (), 'document_version_revert'), url(r'^(?P\d+)/acls/$', 'document_acl_list', (), 'document_acl_list'), + url(r'^(?P\d+)/pages/all/$', DocumentPageListView.as_view(), name='document_pages'), url(r'^multiple/clear_transformations/$', 'document_multiple_clear_transformations', (), 'document_multiple_clear_transformations'), url(r'^maintenance/clear_image_cache/$', 'document_clear_image_cache', (), 'document_clear_image_cache'), diff --git a/mayan/apps/documents/views.py b/mayan/apps/documents/views.py index c894faffc1..55e44045a9 100644 --- a/mayan/apps/documents/views.py +++ b/mayan/apps/documents/views.py @@ -17,7 +17,7 @@ from acls.models import AccessEntry from acls.views import acl_list_for from common.compressed_files import CompressedFile from common.utils import encapsulate, pretty_size, urlquote -from common.views import SingleObjectListView +from common.views import ParentChildListView, SingleObjectListView from common.widgets import two_state_template from converter.literals import ( DEFAULT_FILE_FORMAT_MIMETYPE, DEFAULT_PAGE_NUMBER, DEFAULT_ROTATION, @@ -72,6 +72,26 @@ class DocumentListView(SingleObjectListView): queryset = Document.objects.all() +class DocumentPageListView(ParentChildListView): + object_permission = PERMISSION_DOCUMENT_VIEW + parent_queryset = Document.objects.all() + + def get_queryset(self): + return self.get_object().pages.all() + + def get_context_data(self, **kwargs): + context = super(DocumentPageListView, self).get_context_data(**kwargs) + + context.update( + { + #'hide_links': True, + 'title': _('Pages for document: %s') % self.get_object(), + } + ) + + return context + + class RecentDocumentListView(DocumentListView): extra_context = { 'hide_links': True,