diff --git a/mayan/apps/documents/links.py b/mayan/apps/documents/links.py index 94463767f7..271aa16579 100644 --- a/mayan/apps/documents/links.py +++ b/mayan/apps/documents/links.py @@ -43,11 +43,11 @@ def is_not_current_version(context): def is_first_page(context): - return context['resolved_object'].page_number <= 1 + return context['resolved_object'].siblings.first() == context['resolved_object'] def is_last_page(context): - return context['resolved_object'].page_number >= context['resolved_object'].document_version.pages.count() + return context['resolved_object'].siblings.last() == context['resolved_object'] def is_max_zoom(context): @@ -58,6 +58,14 @@ def is_min_zoom(context): return context['zoom'] <= setting_zoom_min_level.value +def is_document_page_enabled(context): + return context['resolved_object'].enabled + + +def is_document_page_disabled(context): + return not context['resolved_object'].enabled + + # Facet link_document_preview = Link( args='resolved_object.id', @@ -272,6 +280,7 @@ link_trash_can_empty = Link( # Document pages link_document_page_disable = Link( + condition=is_document_page_enabled, icon_class_path='mayan.apps.documents.icons.icon_document_page_disable', kwargs={'pk': 'resolved_object.id'}, permissions=(permission_document_edit,), text=_('Disable page'), @@ -283,6 +292,7 @@ link_document_page_multiple_disable = Link( view='documents:document_page_multiple_disable' ) link_document_page_enable = Link( + condition=is_document_page_disabled, icon_class_path='mayan.apps.documents.icons.icon_document_page_enable', kwargs={'pk': 'resolved_object.id'}, permissions=(permission_document_edit,), text=_('Enable page'), @@ -336,6 +346,7 @@ link_document_page_rotate_right = Link( text=_('Rotate right'), view='documents:document_page_rotate_right', ) link_document_page_view = Link( + conditional_disable=is_document_page_disabled, icon_class_path='mayan.apps.documents.icons.icon_document_page_view', permissions=(permission_document_view,), text=_('Page image'), view='documents:document_page_view', args='resolved_object.pk' diff --git a/mayan/apps/documents/views/document_page_views.py b/mayan/apps/documents/views/document_page_views.py index 81592f8fa8..f05767d627 100644 --- a/mayan/apps/documents/views/document_page_views.py +++ b/mayan/apps/documents/views/document_page_views.py @@ -131,17 +131,17 @@ class DocumentPageNavigationNext(DocumentPageNavigationBase): def get_new_kwargs(self): document_page = self.get_object() - try: - document_page = document_page.siblings.filter( - page_number__gt=document_page.page_number - ).first() - except DocumentPage.DoesNotExist: + new_document_page = document_page.siblings.filter( + page_number__gt=document_page.page_number + ).first() + if new_document_page: + return {'pk': new_document_page.pk} + else: messages.warning( message=_( 'There are no more pages in this document' ), request=self.request ) - finally: return {'pk': document_page.pk} @@ -149,17 +149,17 @@ class DocumentPageNavigationPrevious(DocumentPageNavigationBase): def get_new_kwargs(self): document_page = self.get_object() - try: - document_page = document_page.siblings.filter( - page_number__lt=document_page.page_number - ).last() - except DocumentPage.DoesNotExist: + new_document_page = document_page.siblings.filter( + page_number__lt=document_page.page_number + ).last() + if new_document_page: + return {'pk': new_document_page.pk} + else: messages.warning( message=_( 'You are already at the first page of this document' ), request=self.request ) - finally: return {'pk': document_page.pk}