diff --git a/HISTORY.rst b/HISTORY.rst index 9b88c4878b..714a4d0230 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -6,6 +6,7 @@ XX (2017-XX-XX) - Added PDF orientation detection. GitLab issue #387. - Fix repeated permission list API URL. GitLab issue #389. - Fix role creation API endpoint not returning id. GitLab issue #390. +- Make tags, metadata types and cabinets searchable via the dynamic search API. GitLab issue #344. 2.3 (2017-06-08) ================ diff --git a/mayan/apps/cabinets/models.py b/mayan/apps/cabinets/models.py index ddb5add7f7..c4d58652bb 100644 --- a/mayan/apps/cabinets/models.py +++ b/mayan/apps/cabinets/models.py @@ -13,6 +13,8 @@ from acls.models import AccessControlList from documents.models import Document from documents.permissions import permission_document_view +from .search import cabinet_search # NOQA + @python_2_unicode_compatible class Cabinet(MPTTModel): diff --git a/mayan/apps/cabinets/search.py b/mayan/apps/cabinets/search.py new file mode 100644 index 0000000000..ffd9a888cc --- /dev/null +++ b/mayan/apps/cabinets/search.py @@ -0,0 +1,17 @@ +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_cabinet_view + +cabinet_search = SearchModel( + app_label='cabinets', model_name='Cabinet', + permission=permission_cabinet_view, + serializer_string='cabinets.serializers.CabinetSerializer' +) + +cabinet_search.add_model_field( + field='label', label=_('Label') +) diff --git a/mayan/apps/metadata/apps.py b/mayan/apps/metadata/apps.py index 3f3e380d1d..088307f1dc 100644 --- a/mayan/apps/metadata/apps.py +++ b/mayan/apps/metadata/apps.py @@ -41,6 +41,7 @@ from .permissions import ( permission_metadata_document_add, permission_metadata_document_edit, permission_metadata_document_remove, permission_metadata_document_view ) +from .search import metadata_type_search # NOQA from .widgets import get_metadata_string logger = logging.getLogger(__name__) diff --git a/mayan/apps/metadata/search.py b/mayan/apps/metadata/search.py new file mode 100644 index 0000000000..685b4caae3 --- /dev/null +++ b/mayan/apps/metadata/search.py @@ -0,0 +1,32 @@ +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_metadata_type_view + +metadata_type_search = SearchModel( + app_label='metadata', model_name='MetadataType', + permission=permission_metadata_type_view, + serializer_string='metadata.serializers.MetadataTypeSerializer' +) + +metadata_type_search.add_model_field( + field='name', label=_('Name') +) +metadata_type_search.add_model_field( + field='label', label=_('Label') +) +metadata_type_search.add_model_field( + field='default', label=_('Default') +) +metadata_type_search.add_model_field( + field='lookup', label=_('Lookup') +) +metadata_type_search.add_model_field( + field='validation', label=_('Validator') +) +metadata_type_search.add_model_field( + field='parser', label=_('Parser') +) diff --git a/mayan/apps/tags/apps.py b/mayan/apps/tags/apps.py index 397eb2bcfc..b09ef5af0a 100644 --- a/mayan/apps/tags/apps.py +++ b/mayan/apps/tags/apps.py @@ -25,6 +25,7 @@ from .permissions import ( permission_tag_attach, permission_tag_delete, permission_tag_edit, permission_tag_remove, permission_tag_view ) +from .search import tag_search # NOQA from .widgets import widget_document_tags, widget_single_tag diff --git a/mayan/apps/tags/search.py b/mayan/apps/tags/search.py new file mode 100644 index 0000000000..cdf2be833d --- /dev/null +++ b/mayan/apps/tags/search.py @@ -0,0 +1,21 @@ +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_tag_view + +tag_search = SearchModel( + app_label='tags', model_name='Tag', + permission=permission_tag_view, + serializer_string='tags.serializers.TagSerializer' +) + +tag_search.add_model_field( + field='label', label=_('Label') +) + +tag_search.add_model_field( + field='color', label=_('Color') +)