Use ParentChild CBV to display a list of document pages. This allows fixing a page's transformations in case of error.

This commit is contained in:
Roberto Rosario
2015-06-09 18:53:35 -04:00
parent afb30eab04
commit 8532311367
4 changed files with 33 additions and 8 deletions

View File

@@ -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')))

View File

@@ -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')

View File

@@ -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<document_version_pk>\d+)/revert/$', 'document_version_revert', (), 'document_version_revert'),
url(r'^(?P<document_id>\d+)/acls/$', 'document_acl_list', (), 'document_acl_list'),
url(r'^(?P<pk>\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'),

View File

@@ -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,