diff --git a/mayan/apps/document_indexing/api_views.py b/mayan/apps/document_indexing/api_views.py index 8a13698760..757f3bef3b 100644 --- a/mayan/apps/document_indexing/api_views.py +++ b/mayan/apps/document_indexing/api_views.py @@ -15,7 +15,7 @@ from rest_api.permissions import MayanPermission from .models import Index, IndexInstanceNode from .permissions import (PERMISSION_DOCUMENT_INDEXING_CREATE, PERMISSION_DOCUMENT_INDEXING_VIEW) -from .serializers import IndexSerializer +from .serializers import IndexInstanceNodeSerializer, IndexSerializer class APIIndexView(generics.RetrieveAPIView): @@ -62,3 +62,23 @@ class APIIndexNodeInstanceDocumentListView(generics.ListAPIView): AccessEntry.objects.check_access(PERMISSION_DOCUMENT_INDEXING_VIEW, self.request.user, index_node_instance.index) return index_node_instance.documents.all() + + +class APIDocumentIndexListView(generics.ListAPIView): + """ + Returns a list of all the indexes to which a document belongs. + """ + + serializer_class = IndexInstanceNodeSerializer + + filter_backends = (MayanObjectPermissionsFilter,) + mayan_object_permissions = {'GET': [PERMISSION_DOCUMENT_INDEXING_VIEW]} + + def get_queryset(self): + document = get_object_or_404(Document, pk=self.kwargs['pk']) + try: + Permission.objects.check_permissions(self.request.user, [PERMISSION_DOCUMENT_VIEW]) + except PermissionDenied: + AccessEntry.objects.check_access(PERMISSION_DOCUMENT_VIEW, self.request.user, document) + + return document.node_instances.all() diff --git a/mayan/apps/document_indexing/urls.py b/mayan/apps/document_indexing/urls.py index b9dc7cefe4..cfd30c25b8 100644 --- a/mayan/apps/document_indexing/urls.py +++ b/mayan/apps/document_indexing/urls.py @@ -1,7 +1,8 @@ from django.conf.urls import patterns, url -from .api_views import (APIIndexView, APIIndexListView, - APIIndexNodeInstanceDocumentListView) +from .api_views import (APIDocumentIndexListView, + APIIndexNodeInstanceDocumentListView, APIIndexListView, + APIIndexView) urlpatterns = patterns('document_indexing.views', url(r'^setup/index/list/$', 'index_setup_list', (), 'index_setup_list'), @@ -26,4 +27,5 @@ api_urls = patterns('', url(r'^index/node/(?P[0-9]+)/documents/$', APIIndexNodeInstanceDocumentListView.as_view(), name='index-node-documents'), url(r'^indexes/(?P[0-9]+)/$', APIIndexView.as_view(), name='index-detail'), url(r'^indexes/$', APIIndexListView.as_view(), name='index-list'), + url(r'^document/(?P[0-9]+)/indexes/$', APIDocumentIndexListView.as_view(), name='document-index-list'), )