140 lines
5.5 KiB
Python
140 lines
5.5 KiB
Python
from __future__ import absolute_import, unicode_literals
|
|
|
|
from django.apps import apps
|
|
from django.utils.translation import ugettext_lazy as _
|
|
|
|
from mayan.apps.documents.permissions import (
|
|
permission_document_create, permission_document_new_version
|
|
)
|
|
from mayan.apps.navigation.classes import Link
|
|
|
|
from .literals import (
|
|
SOURCE_CHOICE_WEB_FORM, SOURCE_CHOICE_EMAIL_IMAP, SOURCE_CHOICE_EMAIL_POP3,
|
|
SOURCE_CHOICE_SANE_SCANNER, SOURCE_CHOICE_STAGING, SOURCE_CHOICE_WATCH
|
|
)
|
|
from .permissions import (
|
|
permission_sources_setup_create, permission_sources_setup_delete,
|
|
permission_sources_setup_edit, permission_sources_setup_view
|
|
)
|
|
|
|
|
|
def condition_check_document_creation_acls(context):
|
|
AccessControlList = apps.get_model(
|
|
app_label='acls', model_name='AccessControlList'
|
|
)
|
|
DocumentType = apps.get_model(
|
|
app_label='documents', model_name='DocumentType'
|
|
)
|
|
|
|
queryset = AccessControlList.objects.restrict_queryset(
|
|
permission=permission_document_create,
|
|
queryset=DocumentType.objects.all(), user=context['user']
|
|
)
|
|
|
|
if queryset:
|
|
return True
|
|
|
|
|
|
def document_new_version_not_blocked(context):
|
|
NewVersionBlock = apps.get_model(
|
|
app_label='checkouts', model_name='NewVersionBlock'
|
|
)
|
|
|
|
return not NewVersionBlock.objects.is_blocked(context['object'])
|
|
|
|
|
|
link_document_create_multiple = Link(
|
|
condition=condition_check_document_creation_acls,
|
|
icon_class_path='mayan.apps.sources.icons.icon_document_create_multiple',
|
|
text=_('New document'),
|
|
view='sources:document_create_multiple'
|
|
)
|
|
link_setup_sources = Link(
|
|
icon_class_path='mayan.apps.sources.icons.icon_setup_sources',
|
|
permissions=(permission_sources_setup_view,), text=_('Sources'),
|
|
view='sources:setup_source_list'
|
|
)
|
|
link_setup_source_create_imap_email = Link(
|
|
args='"%s"' % SOURCE_CHOICE_EMAIL_IMAP,
|
|
icon_class_path='mayan.apps.sources.icons.icon_source_create',
|
|
permissions=(permission_sources_setup_create,),
|
|
text=_('Add new IMAP email'), view='sources:setup_source_create',
|
|
)
|
|
link_setup_source_create_pop3_email = Link(
|
|
args='"%s"' % SOURCE_CHOICE_EMAIL_POP3,
|
|
icon_class_path='mayan.apps.sources.icons.icon_source_create',
|
|
permissions=(permission_sources_setup_create,),
|
|
text=_('Add new POP3 email'), view='sources:setup_source_create',
|
|
)
|
|
link_setup_source_create_staging_folder = Link(
|
|
args='"%s"' % SOURCE_CHOICE_STAGING,
|
|
icon_class_path='mayan.apps.sources.icons.icon_source_create',
|
|
permissions=(permission_sources_setup_create,),
|
|
text=_('Add new staging folder'), view='sources:setup_source_create',
|
|
)
|
|
link_setup_source_create_watch_folder = Link(
|
|
args='"%s"' % SOURCE_CHOICE_WATCH,
|
|
icon_class_path='mayan.apps.sources.icons.icon_source_create',
|
|
permissions=(permission_sources_setup_create,),
|
|
text=_('Add new watch folder'), view='sources:setup_source_create',
|
|
)
|
|
link_setup_source_create_webform = Link(
|
|
args='"%s"' % SOURCE_CHOICE_WEB_FORM,
|
|
icon_class_path='mayan.apps.sources.icons.icon_source_create',
|
|
permissions=(permission_sources_setup_create,),
|
|
text=_('Add new webform source'), view='sources:setup_source_create',
|
|
)
|
|
link_setup_source_create_sane_scanner = Link(
|
|
args='"%s"' % SOURCE_CHOICE_SANE_SCANNER,
|
|
icon_class_path='mayan.apps.sources.icons.icon_source_create',
|
|
permissions=(permission_sources_setup_create,),
|
|
text=_('Add new SANE scanner'), view='sources:setup_source_create',
|
|
)
|
|
link_setup_source_delete = Link(
|
|
args=('resolved_object.pk',),
|
|
icon_class_path='mayan.apps.sources.icons.icon_setup_source_delete',
|
|
permissions=(permission_sources_setup_delete,), tags='dangerous',
|
|
text=_('Delete'), view='sources:setup_source_delete',
|
|
)
|
|
link_setup_source_edit = Link(
|
|
args=('resolved_object.pk',),
|
|
icon_class_path='mayan.apps.sources.icons.icon_setup_source_edit',
|
|
permissions=(permission_sources_setup_edit,), text=_('Edit'),
|
|
view='sources:setup_source_edit',
|
|
)
|
|
link_source_list = Link(
|
|
icon_class_path='mayan.apps.sources.icons.icon_source_list',
|
|
permissions=(permission_sources_setup_view,), text=_('Document sources'),
|
|
view='sources:setup_web_form_list'
|
|
)
|
|
link_staging_file_delete = Link(
|
|
args=('source.pk', 'object.encoded_filename',), keep_query=True,
|
|
icon_class_path='mayan.apps.sources.icons.icon_staging_file_delete',
|
|
permissions=(permission_document_new_version, permission_document_create),
|
|
tags='dangerous', text=_('Delete'), view='sources:staging_file_delete',
|
|
)
|
|
link_document_pages_append = Link(
|
|
args='resolved_object.pk', condition=document_new_version_not_blocked,
|
|
icon_class_path='mayan.apps.sources.icons.icon_document_pages_append',
|
|
permissions=(permission_document_new_version,),
|
|
text=_('Append pages'),
|
|
view='sources:document_pages_append'
|
|
)
|
|
link_document_version_upload = Link(
|
|
args='resolved_object.pk', condition=document_new_version_not_blocked,
|
|
icon_class_path='mayan.apps.sources.icons.icon_document_version_upload',
|
|
permissions=(permission_document_new_version,),
|
|
text=_('Upload new version'), view='sources:document_version_upload',
|
|
)
|
|
link_setup_source_logs = Link(
|
|
args=('resolved_object.pk',),
|
|
permissions=(permission_sources_setup_view,), text=_('Logs'),
|
|
view='sources:setup_source_logs',
|
|
)
|
|
link_setup_source_check_now = Link(
|
|
args=('resolved_object.pk',),
|
|
icon_class_path='mayan.apps.sources.icons.icon_setup_source_check_now',
|
|
permissions=(permission_sources_setup_view,), text=_('Check now'),
|
|
view='sources:setup_source_check',
|
|
)
|