Merge all document type selection forms into a single smarter form that can perform permission filtering and allow single or multiple selections. This commit also add the document type selection for submit view to the file metadata app. This commit also updates the document type selection views for the OCR, document parsing, and upload wizard to use the new document type selection form and removes their respective document type selection forms. Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
191 lines
6.5 KiB
Python
191 lines
6.5 KiB
Python
from __future__ import unicode_literals
|
|
|
|
from django.apps import apps
|
|
from django.db.models.signals import post_save
|
|
from django.utils.translation import ugettext_lazy as _
|
|
|
|
from kombu import Exchange, Queue
|
|
|
|
from mayan.apps.acls import ModelPermission
|
|
from mayan.apps.common import (
|
|
MayanAppConfig, menu_facet, menu_multi_item, menu_object, menu_tools
|
|
)
|
|
from mayan.apps.document_indexing.handlers import handler_index_document
|
|
from mayan.apps.documents.search import document_page_search, document_search
|
|
from mayan.apps.documents.signals import post_version_upload
|
|
from mayan.apps.events import ModelEventType
|
|
from mayan.apps.navigation import SourceColumn
|
|
from mayan.celery import app
|
|
|
|
from .drivers import * # NOQA
|
|
from .events import (
|
|
event_file_metadata_document_version_finish,
|
|
event_file_metadata_document_version_submit
|
|
)
|
|
from .handlers import (
|
|
handler_initialize_new_document_type_settings,
|
|
handler_process_document_version
|
|
)
|
|
from .links import (
|
|
link_document_driver_list, link_document_file_metadata_list,
|
|
link_document_submit, link_document_submit_multiple,
|
|
link_document_type_file_metadata_settings, link_document_type_submit
|
|
)
|
|
from .permissions import (
|
|
permission_document_type_file_metadata_setup,
|
|
permission_file_metadata_submit, permission_file_metadata_view
|
|
)
|
|
from .signals import post_document_version_file_metadata_processing
|
|
from .utils import (
|
|
method_document_submit, method_document_version_submit,
|
|
method_get_document_file_metadata,
|
|
method_get_document_version_file_metadata
|
|
)
|
|
|
|
|
|
class FileMetadataApp(MayanAppConfig):
|
|
app_namespace = 'file_metadata'
|
|
app_url = 'file_metadata'
|
|
has_test = True
|
|
name = 'mayan.apps.file_metadata'
|
|
verbose_name = _('File metadata')
|
|
|
|
def ready(self):
|
|
super(FileMetadataApp, self).ready()
|
|
|
|
FileMetadataEntry = self.get_model(model_name='FileMetadataEntry')
|
|
DocumentVersionDriverEntry = self.get_model(
|
|
model_name='DocumentVersionDriverEntry'
|
|
)
|
|
Document = apps.get_model(
|
|
app_label='documents', model_name='Document'
|
|
)
|
|
DocumentTypeSettings = self.get_model(
|
|
model_name='DocumentTypeSettings'
|
|
)
|
|
DocumentType = apps.get_model(
|
|
app_label='documents', model_name='DocumentType'
|
|
)
|
|
DocumentVersion = apps.get_model(
|
|
app_label='documents', model_name='DocumentVersion'
|
|
)
|
|
|
|
Document.add_to_class(
|
|
name='submit_for_file_metadata_processing',
|
|
value=method_document_submit
|
|
)
|
|
Document.add_to_class(
|
|
name='get_file_metadata',
|
|
value=method_get_document_file_metadata
|
|
)
|
|
DocumentVersion.add_to_class(
|
|
name='submit_for_file_metadata_processing',
|
|
value=method_document_version_submit
|
|
)
|
|
DocumentVersion.add_to_class(
|
|
name='get_file_metadata',
|
|
value=method_get_document_version_file_metadata
|
|
)
|
|
|
|
ModelEventType.register(
|
|
model=Document, event_types=(
|
|
event_file_metadata_document_version_finish,
|
|
event_file_metadata_document_version_submit
|
|
)
|
|
)
|
|
|
|
ModelPermission.register(
|
|
model=Document, permissions=(
|
|
permission_file_metadata_submit, permission_file_metadata_view,
|
|
)
|
|
)
|
|
ModelPermission.register(
|
|
model=DocumentType, permissions=(
|
|
permission_document_type_file_metadata_setup,
|
|
permission_file_metadata_submit
|
|
)
|
|
)
|
|
ModelPermission.register_inheritance(
|
|
model=DocumentTypeSettings, related='document_type',
|
|
)
|
|
|
|
SourceColumn(source=FileMetadataEntry, attribute='key')
|
|
SourceColumn(source=FileMetadataEntry, attribute='value')
|
|
SourceColumn(
|
|
source=DocumentVersionDriverEntry, attribute='driver'
|
|
)
|
|
SourceColumn(
|
|
source=DocumentVersionDriverEntry, attribute='driver__internal_name'
|
|
)
|
|
SourceColumn(
|
|
source=DocumentVersionDriverEntry, attribute='get_attribute_count'
|
|
)
|
|
|
|
app.conf.task_queues.append(
|
|
Queue(
|
|
'file_metadata', Exchange('file_metadata'),
|
|
routing_key='file_metadata'
|
|
),
|
|
)
|
|
|
|
app.conf.task_routes.update(
|
|
{
|
|
'mayan.apps.file_metadata.tasks.task_process_document_version': {
|
|
'queue': 'file_metadata'
|
|
},
|
|
}
|
|
)
|
|
|
|
document_search.add_model_field(
|
|
field='versions__file_metadata_drivers__entries__key',
|
|
label=_('File metadata key')
|
|
)
|
|
document_search.add_model_field(
|
|
field='versions__file_metadata_drivers__entries__value',
|
|
label=_('File metadata value')
|
|
)
|
|
|
|
document_page_search.add_model_field(
|
|
field='document_version__file_metadata_drivers__entries__key',
|
|
label=_('File metadata key')
|
|
)
|
|
document_page_search.add_model_field(
|
|
field='document_version__file_metadata_drivers__entries__value',
|
|
label=_('File metadata value')
|
|
)
|
|
|
|
menu_facet.bind_links(
|
|
links=(link_document_driver_list,), sources=(Document,)
|
|
)
|
|
menu_object.bind_links(
|
|
links=(link_document_submit,), sources=(Document,)
|
|
)
|
|
menu_object.bind_links(
|
|
links=(link_document_type_file_metadata_settings,),
|
|
sources=(DocumentType,)
|
|
)
|
|
menu_object.bind_links(
|
|
links=(link_document_file_metadata_list,),
|
|
sources=(DocumentVersionDriverEntry,)
|
|
)
|
|
menu_multi_item.bind_links(
|
|
links=(link_document_submit_multiple,), sources=(Document,)
|
|
)
|
|
menu_tools.bind_links(
|
|
links=(link_document_type_submit,),
|
|
)
|
|
post_save.connect(
|
|
dispatch_uid='file_metadata_handler_initialize_new_document_type_settings',
|
|
receiver=handler_initialize_new_document_type_settings,
|
|
sender=DocumentType
|
|
)
|
|
post_version_upload.connect(
|
|
dispatch_uid='file_metadata_handler_process_document_version',
|
|
receiver=handler_process_document_version, sender=DocumentVersion
|
|
)
|
|
post_document_version_file_metadata_processing.connect(
|
|
dispatch_uid='file_metadata_handler_index_document',
|
|
receiver=handler_index_document,
|
|
sender=DocumentVersion
|
|
)
|