152 lines
5.9 KiB
Python
152 lines
5.9 KiB
Python
from __future__ import absolute_import, unicode_literals
|
|
|
|
from django.utils.translation import ugettext_lazy as _
|
|
|
|
from mayan.apps.navigation.classes import Link
|
|
|
|
from ..icons import (
|
|
icon_document_page_navigation_first,
|
|
icon_document_page_navigation_last, icon_document_page_navigation_next,
|
|
icon_document_page_navigation_previous, icon_document_page_return,
|
|
icon_document_page_rotate_left, icon_document_page_rotate_right,
|
|
icon_document_page_zoom_in, icon_document_page_zoom_out,
|
|
)
|
|
from ..permissions import (
|
|
permission_document_edit, permission_document_tools,
|
|
permission_document_view
|
|
)
|
|
from ..settings import setting_zoom_max_level, setting_zoom_min_level
|
|
|
|
|
|
def is_first_page(context):
|
|
return context['resolved_object'].siblings.first() == context['resolved_object']
|
|
|
|
|
|
def is_last_page(context):
|
|
return context['resolved_object'].siblings.last() == context['resolved_object']
|
|
|
|
|
|
def is_max_zoom(context):
|
|
return context['zoom'] >= setting_zoom_max_level.value
|
|
|
|
|
|
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
|
|
|
|
|
|
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'),
|
|
view='documents:document_page_disable'
|
|
)
|
|
link_document_page_multiple_disable = Link(
|
|
icon_class_path='mayan.apps.documents.icons.icon_document_page_disable',
|
|
text=_('Disable pages'),
|
|
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'),
|
|
view='documents:document_page_enable'
|
|
)
|
|
link_document_page_multiple_enable = Link(
|
|
icon_class_path='mayan.apps.documents.icons.icon_document_page_enable',
|
|
text=_('Enable pages'),
|
|
view='documents:document_page_multiple_enable'
|
|
)
|
|
link_document_page_navigation_first = Link(
|
|
args='resolved_object.pk', conditional_disable=is_first_page,
|
|
icon_class=icon_document_page_navigation_first,
|
|
keep_query=True, permissions=(permission_document_view,),
|
|
text=_('First page'), view='documents:document_page_navigation_first',
|
|
)
|
|
link_document_page_navigation_last = Link(
|
|
args='resolved_object.pk', conditional_disable=is_last_page,
|
|
icon_class=icon_document_page_navigation_last,
|
|
keep_query=True, text=_('Last page'),
|
|
permissions=(permission_document_view,),
|
|
view='documents:document_page_navigation_last',
|
|
)
|
|
link_document_page_navigation_previous = Link(
|
|
args='resolved_object.pk', conditional_disable=is_first_page,
|
|
icon_class=icon_document_page_navigation_previous,
|
|
keep_query=True, permissions=(permission_document_view,),
|
|
text=_('Previous page'),
|
|
view='documents:document_page_navigation_previous',
|
|
)
|
|
link_document_page_navigation_next = Link(
|
|
args='resolved_object.pk', conditional_disable=is_last_page,
|
|
icon_class=icon_document_page_navigation_next,
|
|
keep_query=True, text=_('Next page'),
|
|
permissions=(permission_document_view,),
|
|
view='documents:document_page_navigation_next',
|
|
)
|
|
link_document_page_return = Link(
|
|
args='resolved_object.document.pk', icon_class=icon_document_page_return,
|
|
permissions=(permission_document_view,), text=_('Document'),
|
|
view='documents:document_preview',
|
|
)
|
|
link_document_page_rotate_left = Link(
|
|
args='resolved_object.pk', icon_class=icon_document_page_rotate_left,
|
|
keep_query=True, permissions=(permission_document_view,),
|
|
text=_('Rotate left'), view='documents:document_page_rotate_left',
|
|
)
|
|
link_document_page_rotate_right = Link(
|
|
args='resolved_object.pk', icon_class=icon_document_page_rotate_right,
|
|
keep_query=True, permissions=(permission_document_view,),
|
|
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'
|
|
)
|
|
link_document_page_view_reset = Link(
|
|
icon_class_path='mayan.apps.documents.icons.icon_document_page_view_reset',
|
|
permissions=(permission_document_view,), text=_('Reset view'),
|
|
view='documents:document_page_view_reset', args='resolved_object.pk'
|
|
)
|
|
link_document_page_zoom_in = Link(
|
|
args='resolved_object.pk', conditional_disable=is_max_zoom,
|
|
icon_class=icon_document_page_zoom_in, keep_query=True,
|
|
permissions=(permission_document_view,), text=_('Zoom in'),
|
|
view='documents:document_page_zoom_in',
|
|
)
|
|
link_document_page_zoom_out = Link(
|
|
args='resolved_object.pk', conditional_disable=is_min_zoom,
|
|
icon_class=icon_document_page_zoom_out, keep_query=True,
|
|
permissions=(permission_document_view,), text=_('Zoom out'),
|
|
view='documents:document_page_zoom_out',
|
|
)
|
|
link_document_pages = Link(
|
|
args='resolved_object.pk',
|
|
icon_class_path='mayan.apps.documents.icons.icon_document_pages',
|
|
permissions=(permission_document_view,), text=_('Pages'),
|
|
view='documents:document_pages',
|
|
)
|
|
link_document_multiple_update_page_count = Link(
|
|
icon_class_path='mayan.apps.documents.icons.icon_document_page_count_update',
|
|
text=_('Recalculate page count'),
|
|
view='documents:document_multiple_update_page_count'
|
|
)
|
|
link_document_update_page_count = Link(
|
|
args='resolved_object.pk',
|
|
icon_class_path='mayan.apps.documents.icons.icon_document_page_count_update',
|
|
permissions=(permission_document_tools,),
|
|
text=_('Recalculate page count'),
|
|
view='documents:document_update_page_count'
|
|
)
|