diff --git a/mayan/apps/common/views.py b/mayan/apps/common/views.py index 10169ddd85..dd8fa8abe9 100644 --- a/mayan/apps/common/views.py +++ b/mayan/apps/common/views.py @@ -18,7 +18,7 @@ from django.views.generic.detail import SingleObjectMixin from django.views.generic.edit import CreateView, DeleteView, UpdateView from django.views.generic.list import ListView -from dynamic_search.classes import SearchModel +from documents.search import document_search from .api import tools from .classes import MissingItem @@ -195,7 +195,7 @@ class HomeView(TemplateView): def get(self, request, *args, **kwargs): context = self.get_context_data(**kwargs) - queryset, ids, timedelta = SearchModel.get('documents.Document').search(request.GET, request.user) + queryset, ids, timedelta = document_search.search(request.GET, request.user) # Update the context with the search results context.update({ diff --git a/mayan/apps/documents/apps.py b/mayan/apps/documents/apps.py index 3ba7819ab5..5e016d1d90 100644 --- a/mayan/apps/documents/apps.py +++ b/mayan/apps/documents/apps.py @@ -22,7 +22,6 @@ from converter.permissions import ( PERMISSION_TRANSFORMATION_DELETE, PERMISSION_TRANSFORMATION_EDIT, PERMISSION_TRANSFORMATION_VIEW, ) -from dynamic_search.classes import SearchModel from events.permissions import PERMISSION_EVENTS_VIEW from navigation import SourceColumn from rest_api.classes import APIEndPoint @@ -99,19 +98,6 @@ class DocumentsApp(MayanAppConfig): PERMISSION_TRANSFORMATION_VIEW, ]) - document_search = SearchModel('documents', 'Document', permission=PERMISSION_DOCUMENT_VIEW, serializer_string='documents.serializers.DocumentSerializer') - - # TODO: move these to their respective apps - # Moving these to other apps cause an ImportError; circular import? - document_search.add_model_field('document_type__name', label=_('Document type')) - document_search.add_model_field('versions__mimetype', label=_('MIME type')) - document_search.add_model_field('label', label=_('Label')) - document_search.add_model_field('metadata__metadata_type__name', label=_('Metadata type')) - document_search.add_model_field('metadata__value', label=_('Metadata value')) - document_search.add_model_field('versions__pages__ocr_content__content', label=_('Content')) - document_search.add_model_field('description', label=_('Description')) - document_search.add_model_field('tags__label', label=_('Tags')) - menu_front_page.bind_links(links=[link_document_list_recent, link_document_list]) menu_setup.bind_links(links=[link_document_type_setup]) diff --git a/mayan/apps/documents/search.py b/mayan/apps/documents/search.py new file mode 100644 index 0000000000..9d927672c3 --- /dev/null +++ b/mayan/apps/documents/search.py @@ -0,0 +1,14 @@ +from __future__ import absolute_import, unicode_literals + +from django.utils.translation import ugettext_lazy as _ + +from dynamic_search.classes import SearchModel + +from .permissions import PERMISSION_DOCUMENT_VIEW + +document_search = SearchModel('documents', 'Document', permission=PERMISSION_DOCUMENT_VIEW, serializer_string='documents.serializers.DocumentSerializer') + +document_search.add_model_field(field='document_type__name', label=_('Document type')) +document_search.add_model_field(field='versions__mimetype', label=_('MIME type')) +document_search.add_model_field(field='label', label=_('Label')) +document_search.add_model_field(field='description', label=_('Description')) diff --git a/mayan/apps/metadata/apps.py b/mayan/apps/metadata/apps.py index b864fd1266..6443943855 100644 --- a/mayan/apps/metadata/apps.py +++ b/mayan/apps/metadata/apps.py @@ -13,6 +13,7 @@ from common import ( from common.classes import ModelAttribute from common.utils import encapsulate from documents.models import Document, DocumentType +from documents.search import document_search from documents.signals import post_document_type_change from navigation import SourceColumn from rest_api.classes import APIEndPoint @@ -64,6 +65,9 @@ class MetadataApp(MayanAppConfig): PERMISSION_METADATA_DOCUMENT_REMOVE, PERMISSION_METADATA_DOCUMENT_VIEW, ]) + document_search.add_model_field(field='metadata__metadata_type__name', label=_('Metadata type')) + document_search.add_model_field(field='metadata__value', label=_('Metadata value')) + 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]) diff --git a/mayan/apps/ocr/apps.py b/mayan/apps/ocr/apps.py index 8bac3d4bcd..84bfde59f3 100644 --- a/mayan/apps/ocr/apps.py +++ b/mayan/apps/ocr/apps.py @@ -13,6 +13,7 @@ from common import ( ) from common.utils import encapsulate from documents.models import Document, DocumentType, DocumentVersion +from documents.search import document_search from documents.signals import post_version_upload from documents.widgets import document_link from installation import PropertyNamespace @@ -67,6 +68,8 @@ class OCRApp(MayanAppConfig): ] ) + document_search.add_model_field(field='versions__pages__ocr_content__content', label=_('Content')) + menu_facet.bind_links(links=[link_document_content], sources=[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]) diff --git a/mayan/apps/tags/apps.py b/mayan/apps/tags/apps.py index c334ae25e3..348875fb15 100644 --- a/mayan/apps/tags/apps.py +++ b/mayan/apps/tags/apps.py @@ -9,6 +9,7 @@ from common import ( ) from common.utils import encapsulate from documents.models import Document +from documents.search import document_search from navigation import CombinedSource, SourceColumn from rest_api.classes import APIEndPoint @@ -47,6 +48,8 @@ class TagsApp(MayanAppConfig): PERMISSION_TAG_DELETE, PERMISSION_TAG_EDIT, PERMISSION_TAG_VIEW, ]) + document_search.add_model_field(field='tags__label', label=_('Tags')) + menu_facet.bind_links(links=[link_tag_document_list], sources=[Document]) menu_main.bind_links(links=[link_tag_list]) menu_multi_item.bind_links(links=[link_multiple_documents_attach_tag, link_multiple_documents_tag_remove], sources=[Document])