Convert more apps to new navigation system
This commit is contained in:
@@ -11,11 +11,12 @@ from metadata.models import DocumentMetadata
|
|||||||
from rest_api.classes import APIEndPoint
|
from rest_api.classes import APIEndPoint
|
||||||
|
|
||||||
from .links import (
|
from .links import (
|
||||||
document_index_list, link_index_main_menu, index_parent,
|
link_document_index_list, link_index_main_menu, link_index_parent,
|
||||||
link_index_setup, index_setup_create, index_setup_document_types,
|
link_index_setup, link_index_setup_create, link_index_setup_document_types,
|
||||||
index_setup_delete, index_setup_edit, index_setup_list, index_setup_view,
|
link_index_setup_delete, link_index_setup_edit, link_index_setup_list,
|
||||||
link_rebuild_index_instances, template_node_create, template_node_delete,
|
link_index_setup_view, link_rebuild_index_instances,
|
||||||
template_node_edit
|
link_template_node_create, link_template_node_delete,
|
||||||
|
link_template_node_edit
|
||||||
)
|
)
|
||||||
from .models import Index, IndexTemplateNode, IndexInstanceNode
|
from .models import Index, IndexTemplateNode, IndexInstanceNode
|
||||||
from .tasks import task_delete_empty_index_nodes, task_index_document
|
from .tasks import task_delete_empty_index_nodes, task_index_document
|
||||||
@@ -38,11 +39,7 @@ class DocumentIndexingApp(apps.AppConfig):
|
|||||||
verbose_name = _('Document indexing')
|
verbose_name = _('Document indexing')
|
||||||
|
|
||||||
def ready(self):
|
def ready(self):
|
||||||
post_delete.connect(document_index_delete, dispatch_uid='document_index_delete', sender=Document)
|
APIEndPoint('indexes', app_name='document_indexing')
|
||||||
post_save.connect(document_metadata_index_update, dispatch_uid='document_metadata_index_update', sender=DocumentMetadata)
|
|
||||||
post_delete.connect(document_metadata_index_post_delete, dispatch_uid='document_metadata_index_post_delete', sender=DocumentMetadata)
|
|
||||||
|
|
||||||
register_maintenance_links([link_rebuild_index_instances], namespace='document_indexing', title=_('Indexes'))
|
|
||||||
|
|
||||||
# TODO: convert
|
# TODO: convert
|
||||||
#register_links(Document, [document_index_list], menu_name='form_header')
|
#register_links(Document, [document_index_list], menu_name='form_header')
|
||||||
@@ -55,4 +52,8 @@ class DocumentIndexingApp(apps.AppConfig):
|
|||||||
|
|
||||||
menu_main.bind_links(links=[link_index_main_menu])
|
menu_main.bind_links(links=[link_index_main_menu])
|
||||||
|
|
||||||
APIEndPoint('indexes', app_name='document_indexing')
|
post_delete.connect(document_index_delete, dispatch_uid='document_index_delete', sender=Document)
|
||||||
|
post_save.connect(document_metadata_index_update, dispatch_uid='document_metadata_index_update', sender=DocumentMetadata)
|
||||||
|
post_delete.connect(document_metadata_index_post_delete, dispatch_uid='document_metadata_index_post_delete', sender=DocumentMetadata)
|
||||||
|
|
||||||
|
register_maintenance_links([link_rebuild_index_instances], namespace='document_indexing', title=_('Indexes'))
|
||||||
|
|||||||
@@ -21,28 +21,22 @@ def is_not_root_node(context):
|
|||||||
return not context['node'].is_root_node()
|
return not context['node'].is_root_node()
|
||||||
|
|
||||||
|
|
||||||
|
link_document_index_list = Link(permissions=[PERMISSION_DOCUMENT_INDEXING_VIEW, PERMISSION_DOCUMENT_VIEW], text=_('Indexes'), view='indexing:document_index_list', args='object.pk')
|
||||||
|
link_index_list = Link(permissions=[PERMISSION_DOCUMENT_INDEXING_VIEW], text=_('Index list'), view='indexing:index_list')
|
||||||
link_index_main_menu = Link(icon='fa fa-sitemap', text=_('Indexes'), view='indexing:index_list')
|
link_index_main_menu = Link(icon='fa fa-sitemap', text=_('Indexes'), view='indexing:index_list')
|
||||||
|
link_index_parent = Link(condition=is_not_instance_root_node, dont_mark_active=True, permissions=[PERMISSION_DOCUMENT_INDEXING_VIEW], text=_('Go up one level'), view='indexing:index_instance_node_view', args='object.parent.pk')
|
||||||
link_index_setup = Link(icon='fa fa-sitemap', permissions=[PERMISSION_DOCUMENT_INDEXING_SETUP], text=_('Indexes'), view='indexing:index_setup_list')
|
link_index_setup = Link(icon='fa fa-sitemap', permissions=[PERMISSION_DOCUMENT_INDEXING_SETUP], text=_('Indexes'), view='indexing:index_setup_list')
|
||||||
index_setup_list = {'text': _('Indexes'), 'view': 'indexing:index_setup_list', 'famfam': 'tab', 'permissions': [PERMISSION_DOCUMENT_INDEXING_SETUP]}
|
link_index_setup_list = Link(permissions=[PERMISSION_DOCUMENT_INDEXING_SETUP], text=_('Indexes'), view='indexing:index_setup_list')
|
||||||
index_setup_create = {'text': _('Create index'), 'view': 'indexing:index_setup_create', 'famfam': 'tab_add', 'permissions': [PERMISSION_DOCUMENT_INDEXING_CREATE]}
|
link_index_setup_create = Link(permissions=[PERMISSION_DOCUMENT_INDEXING_CREATE], text=_('Create index'), view='indexing:index_setup_create')
|
||||||
index_setup_edit = {'text': _('Edit'), 'view': 'indexing:index_setup_edit', 'args': 'index.pk', 'famfam': 'tab_edit', 'permissions': [PERMISSION_DOCUMENT_INDEXING_EDIT]}
|
link_index_setup_edit = Link(permissions=[PERMISSION_DOCUMENT_INDEXING_EDIT], text=_('Edit'), view='indexing:index_setup_edit', args='index.pk')
|
||||||
index_setup_delete = {'text': _('Delete'), 'view': 'indexing:index_setup_delete', 'args': 'index.pk', 'famfam': 'tab_delete', 'permissions': [PERMISSION_DOCUMENT_INDEXING_DELETE]}
|
link_index_setup_delete = Link(permissions=[PERMISSION_DOCUMENT_INDEXING_DELETE], text=_('Delete'), view='indexing:index_setup_delete', args='index.pk')
|
||||||
index_setup_view = {'text': _('Tree template'), 'view': 'indexing:index_setup_view', 'args': 'index.pk', 'famfam': 'textfield', 'permissions': [PERMISSION_DOCUMENT_INDEXING_SETUP]}
|
link_index_setup_view = Link(permissions=[PERMISSION_DOCUMENT_INDEXING_SETUP], text=_('Tree template'), view='indexing:index_setup_view', args='index.pk')
|
||||||
index_setup_document_types = {'text': _('Document types'), 'view': 'indexing:index_setup_document_types', 'args': 'index.pk', 'famfam': 'layout', 'permissions': [PERMISSION_DOCUMENT_INDEXING_EDIT]}
|
link_index_setup_document_types = Link(permissions=[PERMISSION_DOCUMENT_INDEXING_EDIT], text=_('Document types'), view='indexing:index_setup_document_types', args='index.pk')
|
||||||
|
|
||||||
template_node_create = {'text': _('New child node'), 'view': 'indexing:template_node_create', 'args': 'node.pk', 'famfam': 'textfield_add', 'permissions': [PERMISSION_DOCUMENT_INDEXING_SETUP]}
|
|
||||||
template_node_edit = {'text': _('Edit'), 'view': 'indexing:template_node_edit', 'args': 'node.pk', 'famfam': 'textfield', 'permissions': [PERMISSION_DOCUMENT_INDEXING_SETUP], 'condition': is_not_root_node}
|
|
||||||
template_node_delete = {'text': _('Delete'), 'view': 'indexing:template_node_delete', 'args': 'node.pk', 'famfam': 'textfield_delete', 'permissions': [PERMISSION_DOCUMENT_INDEXING_SETUP], 'condition': is_not_root_node}
|
|
||||||
|
|
||||||
index_list = {'text': _('Index list'), 'view': 'indexing:index_list', 'famfam': 'tab', 'permissions': [PERMISSION_DOCUMENT_INDEXING_VIEW]}
|
|
||||||
|
|
||||||
index_parent = {'text': _('Go up one level'), 'view': 'indexing:index_instance_node_view', 'args': 'object.parent.pk', 'famfam': 'arrow_up', 'permissions': [PERMISSION_DOCUMENT_INDEXING_VIEW], 'dont_mark_active': True, 'condition': is_not_instance_root_node}
|
|
||||||
document_index_list = {'text': _('Indexes'), 'view': 'indexing:document_index_list', 'args': 'object.pk', 'famfam': 'folder_page', 'permissions': [PERMISSION_DOCUMENT_INDEXING_VIEW, PERMISSION_DOCUMENT_VIEW]}
|
|
||||||
|
|
||||||
# Maintenance
|
|
||||||
link_rebuild_index_instances = Link(
|
link_rebuild_index_instances = Link(
|
||||||
permissions=[PERMISSION_DOCUMENT_INDEXING_REBUILD_INDEXES],
|
|
||||||
description=_('Deletes and creates from scratch all the document indexes.'),
|
description=_('Deletes and creates from scratch all the document indexes.'),
|
||||||
|
permissions=[PERMISSION_DOCUMENT_INDEXING_REBUILD_INDEXES],
|
||||||
text=_('Rebuild indexes'), view='indexing:rebuild_index_instances'
|
text=_('Rebuild indexes'), view='indexing:rebuild_index_instances'
|
||||||
)
|
)
|
||||||
|
link_template_node_create = Link(permissions=[PERMISSION_DOCUMENT_INDEXING_SETUP], text=_('New child node'), view='indexing:template_node_create', args='node.pk')
|
||||||
|
link_template_node_edit = Link(condition=is_not_root_node, permissions=[PERMISSION_DOCUMENT_INDEXING_SETUP], text=_('Edit'), view='indexing:template_node_edit', args='node.pk')
|
||||||
|
link_template_node_delete = Link(condition=is_not_root_node, permissions=[PERMISSION_DOCUMENT_INDEXING_SETUP], text=_('Delete'), view='indexing:template_node_delete', args='node.pk')
|
||||||
|
|||||||
@@ -11,13 +11,14 @@ from django import apps
|
|||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
from acls.api import class_permissions
|
from acls.api import class_permissions
|
||||||
|
from common import menu_facet, menu_sidebar
|
||||||
from django_gpg.exceptions import GPGDecryptionError
|
from django_gpg.exceptions import GPGDecryptionError
|
||||||
from django_gpg.runtime import gpg
|
from django_gpg.runtime import gpg
|
||||||
from documents.models import Document, DocumentVersion
|
from documents.models import Document, DocumentVersion
|
||||||
|
|
||||||
from .links import (
|
from .links import (
|
||||||
document_signature_delete, document_signature_download,
|
link_document_signature_delete, link_document_signature_download,
|
||||||
document_signature_upload, document_verify
|
link_document_signature_upload, link_document_verify
|
||||||
)
|
)
|
||||||
from .models import DocumentVersionSignature
|
from .models import DocumentVersionSignature
|
||||||
from .permissions import (
|
from .permissions import (
|
||||||
@@ -57,12 +58,8 @@ class DocumentSignaturesApp(apps.AppConfig):
|
|||||||
verbose_name = _('Document signatures')
|
verbose_name = _('Document signatures')
|
||||||
|
|
||||||
def ready(self):
|
def ready(self):
|
||||||
# TODO: convert
|
|
||||||
#register_links(Document, [document_verify], menu_name='form_header')
|
|
||||||
#register_links(['signatures:document_verify', 'signatures:document_signature_upload', 'signatures:document_signature_download', 'signatures:document_signature_delete'], [document_signature_upload, document_signature_download, document_signature_delete], menu_name='sidebar')
|
|
||||||
|
|
||||||
DocumentVersion.register_pre_open_hook(1, document_pre_open_hook)
|
|
||||||
DocumentVersion.register_post_save_hook(1, document_post_save_hook)
|
DocumentVersion.register_post_save_hook(1, document_post_save_hook)
|
||||||
|
DocumentVersion.register_pre_open_hook(1, document_pre_open_hook)
|
||||||
|
|
||||||
class_permissions(Document, [
|
class_permissions(Document, [
|
||||||
PERMISSION_DOCUMENT_VERIFY,
|
PERMISSION_DOCUMENT_VERIFY,
|
||||||
@@ -70,3 +67,6 @@ class DocumentSignaturesApp(apps.AppConfig):
|
|||||||
PERMISSION_SIGNATURE_DOWNLOAD,
|
PERMISSION_SIGNATURE_DOWNLOAD,
|
||||||
PERMISSION_SIGNATURE_UPLOAD,
|
PERMISSION_SIGNATURE_UPLOAD,
|
||||||
])
|
])
|
||||||
|
|
||||||
|
menu_facet.bind_links(links=[link_document_verify], sources=[Document])
|
||||||
|
menu_sidebar.bind_links(links=[link_document_signature_upload, link_document_signature_download, link_document_signature_delete], sources=['signatures:document_verify', 'signatures:document_signature_upload', 'signatures:document_signature_download', 'signatures:document_signature_delete'])
|
||||||
|
|||||||
@@ -2,6 +2,8 @@ from __future__ import unicode_literals
|
|||||||
|
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
|
from navigation import Link
|
||||||
|
|
||||||
from .models import DocumentVersionSignature
|
from .models import DocumentVersionSignature
|
||||||
from .permissions import (
|
from .permissions import (
|
||||||
PERMISSION_DOCUMENT_VERIFY,
|
PERMISSION_DOCUMENT_VERIFY,
|
||||||
@@ -19,7 +21,7 @@ def doesnt_have_detached_signature(context):
|
|||||||
return DocumentVersionSignature.objects.has_detached_signature(context['object']) is False
|
return DocumentVersionSignature.objects.has_detached_signature(context['object']) is False
|
||||||
|
|
||||||
|
|
||||||
document_signature_delete = {'text': _('Delete signature'), 'view': 'signatures:document_signature_delete', 'args': 'object.pk', 'famfam': 'pencil_delete', 'permissions': [PERMISSION_SIGNATURE_DELETE], 'conditional_disable': doesnt_have_detached_signature}
|
link_document_signature_delete = Link(conditional_disable=doesnt_have_detached_signature, permissions=[PERMISSION_SIGNATURE_DELETE], text=_('Delete signature'), view='signatures:document_signature_delete', args='object.pk')
|
||||||
document_signature_download = {'text': _('Download signature'), 'view': 'signatures:document_signature_download', 'args': 'object.pk', 'famfam': 'disk', 'permissions': [PERMISSION_SIGNATURE_DOWNLOAD], 'conditional_disable': doesnt_have_detached_signature}
|
link_document_signature_download = Link(conditional_disable=doesnt_have_detached_signature, text=_('Download signature'), view='signatures:document_signature_download', args='object.pk', permissions=[PERMISSION_SIGNATURE_DOWNLOAD])
|
||||||
document_signature_upload = {'text': _('Upload signature'), 'view': 'signatures:document_signature_upload', 'args': 'object.pk', 'famfam': 'pencil_add', 'permissions': [PERMISSION_SIGNATURE_UPLOAD], 'conditional_disable': has_embedded_signature}
|
link_document_signature_upload = Link(conditional_disable=has_embedded_signature, permissions=[PERMISSION_SIGNATURE_UPLOAD], text=_('Upload signature'), view='signatures:document_signature_upload', args='object.pk')
|
||||||
document_verify = {'text': _('Signatures'), 'view': 'signatures:document_verify', 'args': 'object.pk', 'famfam': 'text_signature', 'permissions': [PERMISSION_DOCUMENT_VERIFY]}
|
link_document_verify = Link(permissions=[PERMISSION_DOCUMENT_VERIFY], text=_('Signatures'), view='signatures:document_verify', args='object.pk')
|
||||||
|
|||||||
@@ -34,15 +34,15 @@ class FoldersApp(apps.AppConfig):
|
|||||||
def ready(self):
|
def ready(self):
|
||||||
APIEndPoint('folders')
|
APIEndPoint('folders')
|
||||||
|
|
||||||
|
class_permissions(Document, [
|
||||||
|
PERMISSION_FOLDER_ADD_DOCUMENT, PERMISSION_FOLDER_REMOVE_DOCUMENT
|
||||||
|
])
|
||||||
|
|
||||||
class_permissions(Folder, [
|
class_permissions(Folder, [
|
||||||
ACLS_EDIT_ACL, ACLS_VIEW_ACL, PERMISSION_FOLDER_DELETE,
|
ACLS_EDIT_ACL, ACLS_VIEW_ACL, PERMISSION_FOLDER_DELETE,
|
||||||
PERMISSION_FOLDER_EDIT, PERMISSION_FOLDER_VIEW
|
PERMISSION_FOLDER_EDIT, PERMISSION_FOLDER_VIEW
|
||||||
])
|
])
|
||||||
|
|
||||||
class_permissions(Document, [
|
|
||||||
PERMISSION_FOLDER_ADD_DOCUMENT, PERMISSION_FOLDER_REMOVE_DOCUMENT
|
|
||||||
])
|
|
||||||
|
|
||||||
menu_facet.bind_links(links=[link_document_folder_list], sources=[Document])
|
menu_facet.bind_links(links=[link_document_folder_list], sources=[Document])
|
||||||
menu_main.bind_links(links=[link_folder_list])
|
menu_main.bind_links(links=[link_folder_list])
|
||||||
menu_multi_item.bind_links(links=[link_folder_add_multiple_documents], sources=[Document])
|
menu_multi_item.bind_links(links=[link_folder_add_multiple_documents], sources=[Document])
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ from .permissions import (
|
|||||||
PERMISSION_FOLDER_REMOVE_DOCUMENT
|
PERMISSION_FOLDER_REMOVE_DOCUMENT
|
||||||
)
|
)
|
||||||
|
|
||||||
|
link_document_folder_list = Link(permissions=[PERMISSION_DOCUMENT_VIEW], text=_('Folders'), view='folders:document_folder_list', args='object.pk')
|
||||||
link_folder_acl_list = Link(permissions=[ACLS_VIEW_ACL], text=_('ACLs'), view='folders:folder_acl_list', args='object.pk')
|
link_folder_acl_list = Link(permissions=[ACLS_VIEW_ACL], text=_('ACLs'), view='folders:folder_acl_list', args='object.pk')
|
||||||
link_folder_add_document = Link(permissions=[PERMISSION_FOLDER_ADD_DOCUMENT], text=_('Add to a folder'), view='folders:folder_add_document', args='object.pk')
|
link_folder_add_document = Link(permissions=[PERMISSION_FOLDER_ADD_DOCUMENT], text=_('Add to a folder'), view='folders:folder_add_document', args='object.pk')
|
||||||
link_folder_add_multiple_documents = Link(text=_('Add to folder'), view='folders:folder_add_multiple_documents')
|
link_folder_add_multiple_documents = Link(text=_('Add to folder'), view='folders:folder_add_multiple_documents')
|
||||||
@@ -21,4 +22,3 @@ link_folder_document_multiple_remove = Link(permissions=[PERMISSION_FOLDER_REMOV
|
|||||||
link_folder_edit = Link(permissions=[PERMISSION_FOLDER_EDIT], text=_('Edit'), view='folders:folder_edit', args='object.pk')
|
link_folder_edit = Link(permissions=[PERMISSION_FOLDER_EDIT], text=_('Edit'), view='folders:folder_edit', args='object.pk')
|
||||||
link_folder_list = Link(icon='fa fa-folder', text=_('Folders'), view='folders:folder_list')
|
link_folder_list = Link(icon='fa fa-folder', text=_('Folders'), view='folders:folder_list')
|
||||||
link_folder_view = Link(permissions=[PERMISSION_FOLDER_VIEW], text=_('Documents'), view='folders:folder_view', args='object.pk')
|
link_folder_view = Link(permissions=[PERMISSION_FOLDER_VIEW], text=_('Documents'), view='folders:folder_view', args='object.pk')
|
||||||
link_document_folder_list = Link(permissions=[PERMISSION_DOCUMENT_VIEW], text=_('Folders'), view='folders:document_folder_list', args='object.pk')
|
|
||||||
|
|||||||
@@ -20,7 +20,6 @@ class InstallationApp(apps.AppConfig):
|
|||||||
menu_secondary.bind_links(links=[link_namespace_list], sources=['installation:namespace_list', PropertyNamespace])
|
menu_secondary.bind_links(links=[link_namespace_list], sources=['installation:namespace_list', PropertyNamespace])
|
||||||
menu_tools.bind_links(links=[link_menu_link])
|
menu_tools.bind_links(links=[link_menu_link])
|
||||||
|
|
||||||
# Virtualenv
|
|
||||||
namespace = PropertyNamespace('venv', _('VirtualEnv'))
|
namespace = PropertyNamespace('venv', _('VirtualEnv'))
|
||||||
try:
|
try:
|
||||||
venv = VirtualEnv()
|
venv = VirtualEnv()
|
||||||
|
|||||||
@@ -5,16 +5,20 @@ from django.utils.translation import ugettext_lazy as _
|
|||||||
|
|
||||||
from acls.api import class_permissions
|
from acls.api import class_permissions
|
||||||
from acls.permissions import ACLS_EDIT_ACL, ACLS_VIEW_ACL
|
from acls.permissions import ACLS_EDIT_ACL, ACLS_VIEW_ACL
|
||||||
from common import menu_setup
|
from common import (
|
||||||
|
menu_facet, menu_object, menu_secondary, menu_setup, menu_sidebar
|
||||||
|
)
|
||||||
from documents.models import Document
|
from documents.models import Document
|
||||||
|
|
||||||
from .classes import ResolvedSmartLink
|
from .classes import ResolvedSmartLink
|
||||||
from .links import (
|
from .links import (
|
||||||
smart_link_acl_list, smart_link_create, smart_link_condition_create,
|
link_smart_link_acl_list, link_smart_link_create,
|
||||||
smart_link_condition_delete, smart_link_condition_edit,
|
link_smart_link_condition_create, link_smart_link_condition_delete,
|
||||||
smart_link_condition_list, smart_link_delete, smart_link_document_types,
|
link_smart_link_condition_edit, link_smart_link_condition_list,
|
||||||
smart_link_edit, smart_link_instance_view,
|
link_smart_link_delete, link_smart_link_document_types,
|
||||||
smart_link_instances_for_document, smart_link_list, link_smart_link_setup
|
link_smart_link_edit, link_smart_link_instance_view,
|
||||||
|
link_smart_link_instances_for_document, link_smart_link_list,
|
||||||
|
link_smart_link_setup
|
||||||
)
|
)
|
||||||
from .models import SmartLink, SmartLinkCondition
|
from .models import SmartLink, SmartLinkCondition
|
||||||
from .permissions import (
|
from .permissions import (
|
||||||
@@ -28,17 +32,15 @@ class LinkingApp(apps.AppConfig):
|
|||||||
verbose_name = _('Linking')
|
verbose_name = _('Linking')
|
||||||
|
|
||||||
def ready(self):
|
def ready(self):
|
||||||
# TODO: convert
|
|
||||||
#register_links(Document, [smart_link_instances_for_document], menu_name='form_header')
|
|
||||||
#register_links(SmartLink, [smart_link_edit, smart_link_document_types, smart_link_condition_list, smart_link_acl_list, smart_link_delete])
|
|
||||||
#register_links([SmartLink, 'linking:smart_link_list', 'linking:smart_link_create'], [smart_link_list, smart_link_create], menu_name='secondary_menu')
|
|
||||||
#register_links(SmartLinkCondition, [smart_link_condition_edit, smart_link_condition_delete])
|
|
||||||
#register_links(ResolvedSmartLink, [smart_link_instance_view])
|
|
||||||
#register_links(['linking:smart_link_condition_list', 'linking:smart_link_condition_create', 'linking:smart_link_condition_edit', 'linking:smart_link_condition_delete'], [smart_link_condition_create], menu_name='sidebar')
|
|
||||||
|
|
||||||
menu_setup.bind_links(links=[link_smart_link_setup])
|
|
||||||
|
|
||||||
class_permissions(SmartLink, [
|
class_permissions(SmartLink, [
|
||||||
ACLS_EDIT_ACL, ACLS_VIEW_ACL, PERMISSION_SMART_LINK_DELETE,
|
ACLS_EDIT_ACL, ACLS_VIEW_ACL, PERMISSION_SMART_LINK_DELETE,
|
||||||
PERMISSION_SMART_LINK_EDIT, PERMISSION_SMART_LINK_VIEW
|
PERMISSION_SMART_LINK_EDIT, PERMISSION_SMART_LINK_VIEW
|
||||||
])
|
])
|
||||||
|
|
||||||
|
menu_facet.bind_links(links=[link_smart_link_instances_for_document], sources=[Document])
|
||||||
|
menu_object.bind_links(links=[link_smart_link_condition_edit, link_smart_link_condition_delete], sources=[SmartLinkCondition])
|
||||||
|
menu_object.bind_links(links=[link_smart_link_edit, link_smart_link_document_types, link_smart_link_condition_list, link_smart_link_acl_list, link_smart_link_delete], sources=[SmartLink])
|
||||||
|
menu_object.bind_links(links=[link_smart_link_instance_view], sources=[ResolvedSmartLink])
|
||||||
|
menu_secondary.bind_links(links=[link_smart_link_list, link_smart_link_create], sources=[SmartLink, 'linking:smart_link_list', 'linking:smart_link_create'])
|
||||||
|
menu_setup.bind_links(links=[link_smart_link_setup])
|
||||||
|
menu_sidebar.bind_links(links=[link_smart_link_condition_create], sources=['linking:smart_link_condition_list', 'linking:smart_link_condition_create', 'linking:smart_link_condition_edit', 'linking:smart_link_condition_delete'])
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ from .models import SmartLink, SmartLinkCondition
|
|||||||
class SmartLinkForm(forms.ModelForm):
|
class SmartLinkForm(forms.ModelForm):
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super(SmartLinkForm, self).__init__(*args, **kwargs)
|
super(SmartLinkForm, self).__init__(*args, **kwargs)
|
||||||
self.fields['dynamic_title'].help_text = ' '.join([self.fields['dynamic_title'].help_text, ModelAttribute.help_text_for(Document, type_names=['field', 'related', 'property'])])
|
self.fields['dynamic_title'].help_text = ' '.join([unicode(self.fields['dynamic_title'].help_text), ModelAttribute.help_text_for(Document, type_names=['field', 'related', 'property'])])
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
fields = ('title', 'dynamic_title', 'enabled')
|
fields = ('title', 'dynamic_title', 'enabled')
|
||||||
|
|||||||
@@ -11,19 +11,16 @@ from .permissions import (
|
|||||||
PERMISSION_SMART_LINK_EDIT, PERMISSION_SMART_LINK_VIEW
|
PERMISSION_SMART_LINK_EDIT, PERMISSION_SMART_LINK_VIEW
|
||||||
)
|
)
|
||||||
|
|
||||||
|
link_smart_link_acl_list = Link(permissions=[ACLS_VIEW_ACL], text=_('ACLs'), view='linking:smart_link_acl_list', args='object.pk')
|
||||||
|
link_smart_link_condition_create = Link(permissions=[PERMISSION_SMART_LINK_EDIT], text=_('Create condition'), view='linking:smart_link_condition_create', args='object.pk')
|
||||||
|
link_smart_link_condition_delete = Link(permissions=[PERMISSION_SMART_LINK_EDIT], text=_('Delete'), view='linking:smart_link_condition_delete', args='condition.pk')
|
||||||
|
link_smart_link_condition_edit = Link(permissions=[PERMISSION_SMART_LINK_EDIT], text=_('Edit'), view='linking:smart_link_condition_edit', args='condition.pk')
|
||||||
|
link_smart_link_condition_list = Link(permissions=[PERMISSION_SMART_LINK_EDIT], text=_('Conditions'), view='linking:smart_link_condition_list', args='object.pk')
|
||||||
|
link_smart_link_create = Link(permissions=[PERMISSION_SMART_LINK_CREATE], text=_('Create new smart link'), view='linking:smart_link_create')
|
||||||
|
link_smart_link_delete = Link(permissions=[PERMISSION_SMART_LINK_DELETE], text=_('Delete'), view='linking:smart_link_delete', args='object.pk')
|
||||||
|
link_smart_link_document_types = Link(permissions=[PERMISSION_SMART_LINK_EDIT], text=_('Document types'), view='linking:smart_link_document_types', args='object.pk')
|
||||||
|
link_smart_link_edit = Link(permissions=[PERMISSION_SMART_LINK_EDIT], text=_('Edit'), view='linking:smart_link_edit', args='object.pk')
|
||||||
|
link_smart_link_instance_view = Link(permissions=[PERMISSION_SMART_LINK_VIEW], text=_('Documents'), view='linking:smart_link_instance_view', args=['document.pk', 'object.smart_link.pk'])
|
||||||
|
link_smart_link_instances_for_document = Link(permissions=[PERMISSION_DOCUMENT_VIEW], text=_('Smart links'), view='linking:smart_link_instances_for_document', args='object.pk')
|
||||||
|
link_smart_link_list = Link(permissions=[PERMISSION_SMART_LINK_CREATE], text=_('Smart links'), view='linking:smart_link_list')
|
||||||
link_smart_link_setup = Link(icon='fa fa-link', permissions=[PERMISSION_SMART_LINK_CREATE], text=_('Smart links'), view='linking:smart_link_list')
|
link_smart_link_setup = Link(icon='fa fa-link', permissions=[PERMISSION_SMART_LINK_CREATE], text=_('Smart links'), view='linking:smart_link_list')
|
||||||
smart_link_list = {'text': _('Smart links'), 'view': 'linking:smart_link_list', 'famfam': 'link', 'permissions': [PERMISSION_SMART_LINK_CREATE]}
|
|
||||||
smart_link_create = {'text': _('Create new smart link'), 'view': 'linking:smart_link_create', 'famfam': 'link_add', 'permissions': [PERMISSION_SMART_LINK_CREATE]}
|
|
||||||
smart_link_edit = {'text': _('Edit'), 'view': 'linking:smart_link_edit', 'args': 'object.pk', 'famfam': 'link_edit', 'permissions': [PERMISSION_SMART_LINK_EDIT]}
|
|
||||||
smart_link_delete = {'text': _('Delete'), 'view': 'linking:smart_link_delete', 'args': 'object.pk', 'famfam': 'link_delete', 'permissions': [PERMISSION_SMART_LINK_DELETE]}
|
|
||||||
smart_link_document_types = {'text': _('Document types'), 'view': 'linking:smart_link_document_types', 'args': 'object.pk', 'famfam': 'layout', 'permissions': [PERMISSION_SMART_LINK_EDIT]}
|
|
||||||
|
|
||||||
smart_link_instances_for_document = {'text': _('Smart links'), 'view': 'linking:smart_link_instances_for_document', 'args': 'object.pk', 'famfam': 'page_link', 'permissions': [PERMISSION_DOCUMENT_VIEW]}
|
|
||||||
smart_link_instance_view = {'text': _('Documents'), 'view': 'linking:smart_link_instance_view', 'args': ['document.pk', 'object.smart_link.pk'], 'famfam': 'layout', 'page': [PERMISSION_SMART_LINK_VIEW]}
|
|
||||||
|
|
||||||
smart_link_condition_list = {'text': _('Conditions'), 'view': 'linking:smart_link_condition_list', 'args': 'object.pk', 'famfam': 'cog', 'permissions': [PERMISSION_SMART_LINK_EDIT]}
|
|
||||||
smart_link_condition_create = {'text': _('Create condition'), 'view': 'linking:smart_link_condition_create', 'args': 'object.pk', 'famfam': 'cog_add', 'permissions': [PERMISSION_SMART_LINK_EDIT]}
|
|
||||||
smart_link_condition_edit = {'text': _('Edit'), 'view': 'linking:smart_link_condition_edit', 'args': 'condition.pk', 'famfam': 'cog_edit', 'permissions': [PERMISSION_SMART_LINK_EDIT]}
|
|
||||||
smart_link_condition_delete = {'text': _('Delete'), 'view': 'linking:smart_link_condition_delete', 'args': 'condition.pk', 'famfam': 'cog_delete', 'permissions': [PERMISSION_SMART_LINK_EDIT]}
|
|
||||||
|
|
||||||
smart_link_acl_list = {'text': _('ACLs'), 'view': 'linking:smart_link_acl_list', 'args': 'object.pk', 'famfam': 'lock', 'permissions': [ACLS_VIEW_ACL]}
|
|
||||||
|
|||||||
@@ -7,7 +7,10 @@ from django.db.models.signals import post_delete, post_save
|
|||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
from acls.api import class_permissions
|
from acls.api import class_permissions
|
||||||
from common import menu_setup, menu_tools
|
from common import (
|
||||||
|
menu_facet, menu_multi_item, menu_object, menu_secondary, menu_setup,
|
||||||
|
menu_sidebar, menu_tools
|
||||||
|
)
|
||||||
from common.classes import ModelAttribute
|
from common.classes import ModelAttribute
|
||||||
from common.utils import encapsulate
|
from common.utils import encapsulate
|
||||||
from documents.models import Document, DocumentType
|
from documents.models import Document, DocumentType
|
||||||
@@ -18,12 +21,12 @@ from rest_api.classes import APIEndPoint
|
|||||||
from .api import get_metadata_string
|
from .api import get_metadata_string
|
||||||
from .classes import DocumentMetadataHelper
|
from .classes import DocumentMetadataHelper
|
||||||
from .links import (
|
from .links import (
|
||||||
metadata_add, metadata_edit, metadata_multiple_add, metadata_multiple_edit,
|
link_metadata_add, link_metadata_edit, link_metadata_multiple_add,
|
||||||
metadata_multiple_remove, metadata_remove, metadata_view,
|
link_metadata_multiple_edit, link_metadata_multiple_remove,
|
||||||
setup_document_type_metadata, setup_document_type_metadata_required,
|
link_metadata_remove, link_metadata_view, link_setup_document_type_metadata,
|
||||||
setup_metadata_type_create, setup_metadata_type_delete,
|
link_setup_document_type_metadata_required, link_setup_metadata_type_create,
|
||||||
setup_metadata_type_edit, link_setup_metadata_type_list,
|
link_setup_metadata_type_delete, link_setup_metadata_type_edit,
|
||||||
link_documents_missing_required_metadata
|
link_setup_metadata_type_list, link_documents_missing_required_metadata
|
||||||
)
|
)
|
||||||
from .models import DocumentMetadata, DocumentTypeMetadataType, MetadataType
|
from .models import DocumentMetadata, DocumentTypeMetadataType, MetadataType
|
||||||
from .permissions import (
|
from .permissions import (
|
||||||
@@ -64,36 +67,35 @@ class MetadataApp(apps.AppConfig):
|
|||||||
verbose_name = _('Metadata')
|
verbose_name = _('Metadata')
|
||||||
|
|
||||||
def ready(self):
|
def ready(self):
|
||||||
post_save.connect(post_document_type_metadata_type_add, dispatch_uid='post_document_type_metadata_type_add', sender=DocumentTypeMetadataType)
|
APIEndPoint('metadata')
|
||||||
post_delete.connect(post_document_type_metadata_type_delete, dispatch_uid='post_document_type_metadata_type_delete', sender=DocumentTypeMetadataType)
|
|
||||||
post_document_type_change.connect(post_post_document_type_change_metadata, dispatch_uid='post_post_document_type_change_metadata', sender=Document)
|
|
||||||
|
|
||||||
Document.add_to_class('metadata_value_of', DocumentMetadataHelper.constructor)
|
Document.add_to_class('metadata_value_of', DocumentMetadataHelper.constructor)
|
||||||
|
|
||||||
# TODO: convert
|
ModelAttribute(Document, 'metadata', type_name='related', description=_('Queryset containing a MetadataType instance reference and a value for that metadata type'))
|
||||||
#register_links(['metadata:metadata_add', 'metadata:metadata_edit', 'metadata:metadata_remove', 'metadata:metadata_view'], [metadata_add, metadata_edit, metadata_remove], menu_name='sidebar')
|
ModelAttribute(Document, 'metadata__metadata_type__name', label=_('Metadata type name'), type_name='query')
|
||||||
#register_links(Document, [metadata_view], menu_name='form_header')
|
ModelAttribute(Document, 'metadata__value', label=_('Metadata type value'), type_name='query')
|
||||||
#register_links([Document], [metadata_multiple_add, metadata_multiple_edit, metadata_multiple_remove, link_spacer], menu_name='multi_item_links')
|
ModelAttribute(Document, 'metadata_value_of', label=_('Value of a metadata'), description=_('Return the value of a specific document metadata'), type_name=['property', 'indexing'])
|
||||||
#register_links(DocumentType, [setup_document_type_metadata, setup_document_type_metadata_required])
|
|
||||||
#register_links(MetadataType, [setup_metadata_type_edit, setup_metadata_type_delete])
|
|
||||||
#register_links([MetadataType, 'metadata:setup_metadata_type_list', 'metadata:setup_metadata_type_create'], [setup_metadata_type_list, setup_metadata_type_create], menu_name='secondary_menu')
|
|
||||||
|
|
||||||
menu_setup.bind_links(links=[link_setup_metadata_type_list])
|
|
||||||
menu_tools.bind_links(links=[link_documents_missing_required_metadata])
|
|
||||||
|
|
||||||
class_permissions(Document, [
|
class_permissions(Document, [
|
||||||
PERMISSION_METADATA_DOCUMENT_ADD, PERMISSION_METADATA_DOCUMENT_EDIT,
|
PERMISSION_METADATA_DOCUMENT_ADD, PERMISSION_METADATA_DOCUMENT_EDIT,
|
||||||
PERMISSION_METADATA_DOCUMENT_REMOVE, PERMISSION_METADATA_DOCUMENT_VIEW,
|
PERMISSION_METADATA_DOCUMENT_REMOVE, PERMISSION_METADATA_DOCUMENT_VIEW,
|
||||||
])
|
])
|
||||||
|
|
||||||
|
menu_facet.bind_links(links=[link_metadata_view], sources=[Document])
|
||||||
|
menu_multi_item.bind_links(links=[link_metadata_multiple_add, link_metadata_multiple_edit, link_metadata_multiple_remove], sources=[Document])
|
||||||
|
menu_object.bind_links(links=[link_setup_document_type_metadata, link_setup_document_type_metadata_required], sources=[DocumentType])
|
||||||
|
menu_object.bind_links(links=[link_setup_metadata_type_edit, link_setup_metadata_type_delete], sources=[MetadataType])
|
||||||
|
menu_secondary.bind_links(links=[link_setup_metadata_type_list, link_setup_metadata_type_create], sources=[MetadataType, 'metadata:setup_metadata_type_list', 'metadata:setup_metadata_type_create'])
|
||||||
|
menu_setup.bind_links(links=[link_setup_metadata_type_list])
|
||||||
|
menu_sidebar.bind_links(links=[link_metadata_add, link_metadata_edit, link_metadata_remove], sources=['metadata:metadata_add', 'metadata:metadata_edit', 'metadata:metadata_remove', 'metadata:metadata_view'])
|
||||||
|
menu_tools.bind_links(links=[link_documents_missing_required_metadata])
|
||||||
|
|
||||||
|
post_save.connect(post_document_type_metadata_type_add, dispatch_uid='post_document_type_metadata_type_add', sender=DocumentTypeMetadataType)
|
||||||
|
post_delete.connect(post_document_type_metadata_type_delete, dispatch_uid='post_document_type_metadata_type_delete', sender=DocumentTypeMetadataType)
|
||||||
|
post_document_type_change.connect(post_post_document_type_change_metadata, dispatch_uid='post_post_document_type_change_metadata', sender=Document)
|
||||||
|
|
||||||
register_model_list_columns(Document, [
|
register_model_list_columns(Document, [
|
||||||
{
|
{
|
||||||
'name': _('Metadata'), 'attribute': encapsulate(lambda x: get_metadata_string(x))
|
'name': _('Metadata'), 'attribute': encapsulate(lambda x: get_metadata_string(x))
|
||||||
},
|
},
|
||||||
])
|
])
|
||||||
|
|
||||||
APIEndPoint('metadata')
|
|
||||||
ModelAttribute(Document, 'metadata__metadata_type__name', label=_('Metadata type name'), type_name='query')
|
|
||||||
ModelAttribute(Document, 'metadata__value', label=_('Metadata type value'), type_name='query')
|
|
||||||
ModelAttribute(Document, 'metadata', type_name='related', description=_('Queryset containing a MetadataType instance reference and a value for that metadata type'))
|
|
||||||
ModelAttribute(Document, 'metadata_value_of', label=_('Value of a metadata'), description=_('Return the value of a specific document metadata'), type_name=['property', 'indexing'])
|
|
||||||
|
|||||||
@@ -12,21 +12,17 @@ from .permissions import (
|
|||||||
PERMISSION_METADATA_TYPE_EDIT, PERMISSION_METADATA_TYPE_VIEW
|
PERMISSION_METADATA_TYPE_EDIT, PERMISSION_METADATA_TYPE_VIEW
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
metadata_edit = {'text': _('Edit metadata'), 'view': 'metadata:metadata_edit', 'args': 'object.pk', 'famfam': 'xhtml_go', 'permissions': [PERMISSION_METADATA_DOCUMENT_EDIT]}
|
|
||||||
metadata_view = {'text': _('Metadata'), 'view': 'metadata:metadata_view', 'args': 'object.pk', 'famfam': 'xhtml_go', 'permissions': [PERMISSION_METADATA_DOCUMENT_VIEW]}
|
|
||||||
metadata_multiple_edit = {'text': _('Edit metadata'), 'view': 'metadata:metadata_multiple_edit', 'famfam': 'xhtml_go', 'permissions': [PERMISSION_METADATA_DOCUMENT_EDIT]}
|
|
||||||
metadata_add = {'text': _('Add metadata'), 'view': 'metadata:metadata_add', 'args': 'object.pk', 'famfam': 'xhtml_add', 'permissions': [PERMISSION_METADATA_DOCUMENT_ADD]}
|
|
||||||
metadata_multiple_add = {'text': _('Add metadata'), 'view': 'metadata:metadata_multiple_add', 'famfam': 'xhtml_add', 'permissions': [PERMISSION_METADATA_DOCUMENT_ADD]}
|
|
||||||
metadata_remove = {'text': _('Remove metadata'), 'view': 'metadata:metadata_remove', 'args': 'object.pk', 'famfam': 'xhtml_delete', 'permissions': [PERMISSION_METADATA_DOCUMENT_REMOVE]}
|
|
||||||
metadata_multiple_remove = {'text': _('Remove metadata'), 'view': 'metadata:metadata_multiple_remove', 'famfam': 'xhtml_delete', 'permissions': [PERMISSION_METADATA_DOCUMENT_REMOVE]}
|
|
||||||
|
|
||||||
setup_document_type_metadata = {'text': _('Optional metadata'), 'view': 'metadata:setup_document_type_metadata', 'args': 'document_type.pk', 'famfam': 'xhtml', 'permissions': [PERMISSION_DOCUMENT_TYPE_EDIT]}
|
|
||||||
setup_document_type_metadata_required = {'text': _('Required metadata'), 'view': 'metadata:setup_document_type_metadata_required', 'args': 'document_type.pk', 'famfam': 'xhtml', 'permissions': [PERMISSION_DOCUMENT_TYPE_EDIT]}
|
|
||||||
|
|
||||||
link_setup_metadata_type_list = Link(icon='fa fa-list', permissions=[PERMISSION_METADATA_TYPE_VIEW], text=_('Metadata types'), view='metadata:setup_metadata_type_list')
|
|
||||||
setup_metadata_type_edit = {'text': _('Edit'), 'view': 'metadata:setup_metadata_type_edit', 'args': 'object.pk', 'famfam': 'xhtml', 'permissions': [PERMISSION_METADATA_TYPE_EDIT]}
|
|
||||||
setup_metadata_type_delete = {'text': _('Delete'), 'view': 'metadata:setup_metadata_type_delete', 'args': 'object.pk', 'famfam': 'xhtml_delete', 'permissions': [PERMISSION_METADATA_TYPE_DELETE]}
|
|
||||||
setup_metadata_type_create = {'text': _('Create new'), 'view': 'metadata:setup_metadata_type_create', 'famfam': 'xhtml_add', 'permissions': [PERMISSION_METADATA_TYPE_CREATE]}
|
|
||||||
|
|
||||||
link_documents_missing_required_metadata = Link(icon='fa fa-edit', text=_('Missing required metadata'), view='metadata:documents_missing_required_metadata')
|
link_documents_missing_required_metadata = Link(icon='fa fa-edit', text=_('Missing required metadata'), view='metadata:documents_missing_required_metadata')
|
||||||
|
link_metadata_add = Link(permissions=[PERMISSION_METADATA_DOCUMENT_ADD], text=_('Add metadata'), view='metadata:metadata_add', args='object.pk')
|
||||||
|
link_metadata_edit = Link(permissions=[PERMISSION_METADATA_DOCUMENT_EDIT], text=_('Edit metadata'), view='metadata:metadata_edit', args='object.pk')
|
||||||
|
link_metadata_multiple_add = Link(permissions=[PERMISSION_METADATA_DOCUMENT_ADD], text=_('Add metadata'), view='metadata:metadata_multiple_add')
|
||||||
|
link_metadata_multiple_edit = Link(permissions=[PERMISSION_METADATA_DOCUMENT_EDIT], text=_('Edit metadata'), view='metadata:metadata_multiple_edit')
|
||||||
|
link_metadata_multiple_remove = Link(permissions=[PERMISSION_METADATA_DOCUMENT_REMOVE], text=_('Remove metadata'), view='metadata:metadata_multiple_remove')
|
||||||
|
link_metadata_remove = Link(permissions=[PERMISSION_METADATA_DOCUMENT_REMOVE], text=_('Remove metadata'), view='metadata:metadata_remove', args='object.pk')
|
||||||
|
link_metadata_view = Link(permissions=[PERMISSION_METADATA_DOCUMENT_VIEW], text=_('Metadata'), view='metadata:metadata_view', args='object.pk')
|
||||||
|
link_setup_document_type_metadata = Link(permissions=[PERMISSION_DOCUMENT_TYPE_EDIT], text=_('Optional metadata'), view='metadata:setup_document_type_metadata', args='document_type.pk')
|
||||||
|
link_setup_document_type_metadata_required = Link(permissions=[PERMISSION_DOCUMENT_TYPE_EDIT], text=_('Required metadata'), view='metadata:setup_document_type_metadata_required', args='document_type.pk')
|
||||||
|
link_setup_metadata_type_create = Link(permissions=[PERMISSION_METADATA_TYPE_CREATE], text=_('Create new'), view='metadata:setup_metadata_type_create')
|
||||||
|
link_setup_metadata_type_delete = Link(permissions=[PERMISSION_METADATA_TYPE_DELETE], text=_('Delete'), view='metadata:setup_metadata_type_delete', args='object.pk')
|
||||||
|
link_setup_metadata_type_edit = Link(permissions=[PERMISSION_METADATA_TYPE_EDIT], text=_('Edit'), view='metadata:setup_metadata_type_edit', args='object.pk')
|
||||||
|
link_setup_metadata_type_list = Link(icon='fa fa-list', permissions=[PERMISSION_METADATA_TYPE_VIEW], text=_('Metadata types'), view='metadata:setup_metadata_type_list')
|
||||||
|
|||||||
@@ -90,14 +90,19 @@ class Menu(object):
|
|||||||
|
|
||||||
for resolved_navigation_object in resolved_navigation_object_list:
|
for resolved_navigation_object in resolved_navigation_object_list:
|
||||||
for source, links in self.bound_links.iteritems():
|
for source, links in self.bound_links.iteritems():
|
||||||
if inspect.isclass(source) and isinstance(resolved_navigation_object, source) or source == CombinedSource(obj=(resolved_navigation_object), view=current_view):
|
try:
|
||||||
|
if inspect.isclass(source) and isinstance(resolved_navigation_object, source) or source == CombinedSource(obj=resolved_navigation_object, view=current_view):
|
||||||
for link in links:
|
for link in links:
|
||||||
resolved_link = link.resolve(context)
|
resolved_link = link.resolve(context)
|
||||||
if resolved_link:
|
if resolved_link:
|
||||||
result.append(resolved_link)
|
result.append(resolved_link)
|
||||||
|
|
||||||
#break # No need for further content object match testing
|
#break # No need for further content object match testing
|
||||||
|
|
||||||
|
except TypeError:
|
||||||
|
# When source is a dictionary
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
# View links
|
# View links
|
||||||
for link in self.bound_links.get(current_view, []):
|
for link in self.bound_links.get(current_view, []):
|
||||||
resolved_link = link.resolve(context)
|
resolved_link = link.resolve(context)
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ from django import apps
|
|||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
from acls.api import class_permissions
|
from acls.api import class_permissions
|
||||||
from common import menu_tools
|
from common import menu_multi_item, menu_object, menu_secondary, menu_tools
|
||||||
from common.utils import encapsulate
|
from common.utils import encapsulate
|
||||||
from documents.models import Document, DocumentVersion
|
from documents.models import Document, DocumentVersion
|
||||||
from documents.signals import post_version_upload
|
from documents.signals import post_version_upload
|
||||||
@@ -52,36 +52,21 @@ class OCRApp(apps.AppConfig):
|
|||||||
verbose_name = _('OCR')
|
verbose_name = _('OCR')
|
||||||
|
|
||||||
def ready(self):
|
def ready(self):
|
||||||
# TODO: convert
|
APIEndPoint('ocr')
|
||||||
#register_links(Document, [link_document_submit])
|
|
||||||
#register_links([Document], [link_document_submit_multiple, link_spacer], menu_name='multi_item_links')
|
|
||||||
#register_links([DocumentVersionOCRError], [link_entry_re_queue_multiple, link_entry_delete_multiple], menu_name='multi_item_links')
|
|
||||||
#register_links([DocumentVersionOCRError], [link_entry_re_queue, link_entry_delete])
|
|
||||||
#register_links(['ocr:entry_list', 'ocr:entry_delete_multiple', 'ocr:entry_re_queue_multiple', DocumentVersionOCRError], [link_entry_list], menu_name='secondary_menu')
|
|
||||||
register_maintenance_links([link_document_all_ocr_cleanup], namespace='ocr', title=_('OCR'))
|
|
||||||
|
|
||||||
post_version_upload.connect(post_version_upload_ocr, dispatch_uid='post_version_upload_ocr', sender=DocumentVersion)
|
|
||||||
|
|
||||||
Document.add_to_class('submit_for_ocr', document_ocr_submit)
|
Document.add_to_class('submit_for_ocr', document_ocr_submit)
|
||||||
DocumentVersion.add_to_class('submit_for_ocr', document_version_ocr_submit)
|
DocumentVersion.add_to_class('submit_for_ocr', document_version_ocr_submit)
|
||||||
|
|
||||||
class_permissions(Document, [PERMISSION_OCR_DOCUMENT])
|
class_permissions(Document, [PERMISSION_OCR_DOCUMENT])
|
||||||
|
|
||||||
|
menu_multi_item.bind_links(links=[link_document_submit_multiple], sources=[Document])
|
||||||
|
menu_multi_item.bind_links(links=[link_entry_re_queue_multiple, link_entry_delete_multiple], sources=[DocumentVersionOCRError])
|
||||||
|
menu_object.bind_links(links=[link_document_submit], sources=[Document])
|
||||||
|
menu_object.bind_links(links=[link_entry_re_queue, link_entry_delete], sources=[DocumentVersionOCRError])
|
||||||
|
menu_secondary.bind_links(links=[link_entry_list], sources=['ocr:entry_list', 'ocr:entry_delete_multiple', 'ocr:entry_re_queue_multiple', DocumentVersionOCRError])
|
||||||
menu_tools.bind_links(links=[link_entry_list])
|
menu_tools.bind_links(links=[link_entry_list])
|
||||||
|
|
||||||
APIEndPoint('ocr')
|
post_version_upload.connect(post_version_upload_ocr, dispatch_uid='post_version_upload_ocr', sender=DocumentVersion)
|
||||||
|
|
||||||
register_model_list_columns(DocumentVersionOCRError, [
|
|
||||||
{
|
|
||||||
'name': _('Document'), 'attribute': encapsulate(lambda entry: document_link(entry.document_version.document))
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'name': _('Added'), 'attribute': 'datetime_submitted'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'name': _('Result'), 'attribute': 'result'
|
|
||||||
},
|
|
||||||
])
|
|
||||||
|
|
||||||
namespace = PropertyNamespace('ocr', _('OCR'))
|
namespace = PropertyNamespace('ocr', _('OCR'))
|
||||||
|
|
||||||
@@ -111,3 +96,17 @@ class OCRApp(apps.AppConfig):
|
|||||||
namespace.add_property('unpaper', _('unpaper version'), _('error getting version'), report=True)
|
namespace.add_property('unpaper', _('unpaper version'), _('error getting version'), report=True)
|
||||||
else:
|
else:
|
||||||
namespace.add_property('unpaper', _('unpaper version'), unpaper('-V').stdout, report=True)
|
namespace.add_property('unpaper', _('unpaper version'), unpaper('-V').stdout, report=True)
|
||||||
|
|
||||||
|
register_maintenance_links([link_document_all_ocr_cleanup], namespace='ocr', title=_('OCR'))
|
||||||
|
|
||||||
|
register_model_list_columns(DocumentVersionOCRError, [
|
||||||
|
{
|
||||||
|
'name': _('Document'), 'attribute': encapsulate(lambda entry: document_link(entry.document_version.document))
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'name': _('Added'), 'attribute': 'datetime_submitted'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'name': _('Result'), 'attribute': 'result'
|
||||||
|
},
|
||||||
|
])
|
||||||
|
|||||||
@@ -6,7 +6,9 @@ from django.core.exceptions import ObjectDoesNotExist
|
|||||||
from django.db.models.signals import post_save
|
from django.db.models.signals import post_save
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
from common.menus import menu_setup
|
from common.menus import (
|
||||||
|
menu_multi_item, menu_object, menu_secondary, menu_setup
|
||||||
|
)
|
||||||
from rest_api.classes import APIEndPoint
|
from rest_api.classes import APIEndPoint
|
||||||
|
|
||||||
from .models import Role
|
from .models import Role
|
||||||
@@ -38,13 +40,11 @@ class PermissionsApp(apps.AppConfig):
|
|||||||
verbose_name = _('Permissions')
|
verbose_name = _('Permissions')
|
||||||
|
|
||||||
def ready(self):
|
def ready(self):
|
||||||
# TODO: convert
|
APIEndPoint('permissions')
|
||||||
#register_links(Role, [role_edit, role_members, role_permissions, role_delete])
|
|
||||||
#register_links([Role, 'permissions:role_create', 'permissions:role_list'], [role_list, role_create], menu_name='secondary_menu')
|
|
||||||
#register_links(['permissions:role_permissions'], [permission_grant, permission_revoke], menu_name='multi_item_links')
|
|
||||||
|
|
||||||
post_save.connect(user_post_save, sender=User)
|
|
||||||
|
|
||||||
|
menu_object.bind_links(links=[link_role_edit, link_role_members, link_role_permissions, link_role_delete], sources=[Role])
|
||||||
|
menu_multi_item.bind_links(links=[link_permission_grant, link_permission_revoke], sources=['permissions:role_permissions'])
|
||||||
|
menu_secondary.bind_links(links=[link_role_list, link_role_create], sources=[Role, 'permissions:role_create', 'permissions:role_list'])
|
||||||
menu_setup.bind_links(links=[link_role_list])
|
menu_setup.bind_links(links=[link_role_list])
|
||||||
|
|
||||||
APIEndPoint('permissions')
|
post_save.connect(user_post_save, sender=User)
|
||||||
|
|||||||
@@ -3,7 +3,9 @@ from __future__ import absolute_import, unicode_literals
|
|||||||
from django import apps
|
from django import apps
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
from common import menu_front_page, menu_setup
|
from common import (
|
||||||
|
menu_front_page, menu_object, menu_secondary, menu_sidebar, menu_setup
|
||||||
|
)
|
||||||
from common.utils import encapsulate
|
from common.utils import encapsulate
|
||||||
from documents.models import Document
|
from documents.models import Document
|
||||||
from main import MissingItem
|
from main import MissingItem
|
||||||
@@ -35,23 +37,19 @@ class SourcesApp(apps.AppConfig):
|
|||||||
APIEndPoint('sources')
|
APIEndPoint('sources')
|
||||||
MissingItem(label=_('Create a document source'), description=_('Document sources are the way in which new documents are feed to Mayan EDMS, create at least a web form source to be able to upload documents from a browser.'), condition=lambda: not Source.objects.exists(), view='sources:setup_source_list')
|
MissingItem(label=_('Create a document source'), description=_('Document sources are the way in which new documents are feed to Mayan EDMS, create at least a web form source to be able to upload documents from a browser.'), condition=lambda: not Source.objects.exists(), view='sources:setup_source_list')
|
||||||
|
|
||||||
|
menu_front_page.bind_links(links=[link_document_create_multiple])
|
||||||
|
menu_object.bind_links(links=[link_document_create_siblings], sources=[Document])
|
||||||
|
menu_object.bind_links(links=[link_setup_source_edit, link_setup_source_transformation_list, link_setup_source_delete], sources=[Source])
|
||||||
|
menu_object.bind_links(links=[link_setup_source_transformation_edit, link_setup_source_transformation_delete], sources=[SourceTransformation])
|
||||||
|
menu_object.bind_links(links=[link_staging_file_delete], sources=[StagingFile])
|
||||||
|
menu_secondary.bind_links(links=[link_setup_sources, link_setup_source_create_webform, link_setup_source_create_staging_folder, link_setup_source_create_pop3_email, link_setup_source_create_imap_email, link_setup_source_create_watch_folder], sources=[Source, 'sources:setup_source_list', 'sources:setup_source_create'])
|
||||||
|
menu_setup.bind_links(links=[link_setup_sources])
|
||||||
|
menu_sidebar.bind_links(links=[link_setup_source_transformation_create], sources=[SourceTransformation, 'sources:setup_source_transformation_create', 'sources:setup_source_transformation_list'])
|
||||||
|
menu_sidebar.bind_links(links=[link_upload_version], sources=['documents:document_version_list', 'documents:upload_version', 'documents:document_version_revert'])
|
||||||
|
|
||||||
register_model_list_columns(StagingFile, [
|
register_model_list_columns(StagingFile, [
|
||||||
{
|
{
|
||||||
'name': _('Thumbnail'), 'attribute':
|
'name': _('Thumbnail'), 'attribute':
|
||||||
encapsulate(lambda x: staging_file_thumbnail(x, gallery_name='sources:staging_list', title=x.filename, size='100'))
|
encapsulate(lambda x: staging_file_thumbnail(x, gallery_name='sources:staging_list', title=x.filename, size='100'))
|
||||||
},
|
},
|
||||||
])
|
])
|
||||||
|
|
||||||
# TODO: convert
|
|
||||||
#register_links([StagingFile], [staging_file_delete])
|
|
||||||
#register_links([Source, 'sources:setup_source_list', 'sources:setup_source_create'], [setup_sources, setup_source_create_webform, setup_source_create_staging_folder, setup_source_create_pop3_email, setup_source_create_imap_email, setup_source_create_watch_folder], menu_name='secondary_menu')
|
|
||||||
#register_links([Source], [setup_source_edit, setup_source_transformation_list, setup_source_delete])
|
|
||||||
#register_links(SourceTransformation, [setup_source_transformation_edit, setup_source_transformation_delete])
|
|
||||||
#register_links([SourceTransformation, 'sources:setup_source_transformation_create', 'sources:setup_source_transformation_list'], [setup_source_transformation_create], menu_name='sidebar')
|
|
||||||
#register_links(['documents:document_version_list', 'documents:upload_version', 'documents:document_version_revert'], [upload_version], menu_name='sidebar')
|
|
||||||
#register_links(Document, [document_create_siblings])
|
|
||||||
|
|
||||||
menu_setup.bind_links(links=[link_setup_sources])
|
|
||||||
|
|
||||||
menu_front_page.bind_links(links=[link_document_create_multiple])
|
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ from __future__ import unicode_literals
|
|||||||
from django import apps
|
from django import apps
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
from common import menu_tools
|
from common import menu_object, menu_secondary, menu_tools
|
||||||
|
|
||||||
from .classes import Statistic, StatisticNamespace
|
from .classes import Statistic, StatisticNamespace
|
||||||
from .links import (
|
from .links import (
|
||||||
@@ -17,7 +17,7 @@ class StatisticsApp(apps.AppConfig):
|
|||||||
verbose_name = _('Statistics')
|
verbose_name = _('Statistics')
|
||||||
|
|
||||||
def ready(self):
|
def ready(self):
|
||||||
#register_links(StatisticNamespace, [link_namespace_details])
|
menu_object.bind_links(links=[link_execute], sources=[Statistic])
|
||||||
#register_links([StatisticNamespace, 'statistics:namespace_list', 'statistics:execute'], [link_namespace_list], menu_name='secondary_menu')
|
menu_object.bind_links(links=[link_namespace_details], sources=[StatisticNamespace])
|
||||||
#register_links(Statistic, [link_execute])
|
menu_secondary.bind_links(links=[link_namespace_list], sources=[StatisticNamespace, 'statistics:namespace_list', 'statistics:execute'])
|
||||||
menu_tools.bind_links(links=[link_statistics])
|
menu_tools.bind_links(links=[link_statistics])
|
||||||
|
|||||||
Reference in New Issue
Block a user