Add additional API and view tests. Add success and multi document titles strings. Make use of external mixin in the document type submit view. Puntuate all view text strings. Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
106 lines
3.5 KiB
Python
106 lines
3.5 KiB
Python
from __future__ import absolute_import, unicode_literals
|
|
|
|
from django.shortcuts import get_object_or_404
|
|
|
|
from rest_framework import status
|
|
from rest_framework.decorators import action
|
|
from rest_framework.response import Response
|
|
|
|
from mayan.apps.documents.models import Document, DocumentVersion
|
|
from mayan.apps.rest_api.viewsets import MayanAPIViewSet, MayanAPIGenericViewSet
|
|
|
|
from .permissions import permission_content_view, permission_parse_document
|
|
from .serializers import (
|
|
DocumentParsingSerializer, DocumentPageParsingSerializer,
|
|
DocumentVersionParsingSerializer
|
|
)
|
|
|
|
|
|
class DocumentParsingAPIViewSet(MayanAPIGenericViewSet):
|
|
lookup_url_kwarg = 'document_id'
|
|
object_permission_map = {
|
|
'parsing_content': permission_content_view,
|
|
'parsing_submit': permission_parse_document,
|
|
}
|
|
queryset = Document.objects.all()
|
|
serializer_class = DocumentParsingSerializer
|
|
|
|
@action(
|
|
detail=True, url_name='content', url_path='parsing'
|
|
)
|
|
def parsing_content(self, request, *args, **kwargs):
|
|
instance = self.get_object()
|
|
serializer = self.get_serializer(instance)
|
|
headers = self.get_success_headers(data=serializer.data)
|
|
return Response(
|
|
serializer.data, status=status.HTTP_200_OK, headers=headers
|
|
)
|
|
|
|
@action(
|
|
detail=True, methods=('post',), url_name='submit',
|
|
url_path='parsing/submit'
|
|
)
|
|
def parsing_submit(self, request, *args, **kwargs):
|
|
instance = self.get_object()
|
|
instance.submit_for_parsing(_user=request.user)
|
|
return Response(
|
|
data=None, status=status.HTTP_202_ACCEPTED
|
|
)
|
|
|
|
|
|
class DocumentVersionParsingAPIViewSet(MayanAPIViewSet):
|
|
lookup_url_kwarg = 'document_version_id'
|
|
object_permission_map = {
|
|
'parsing_content': permission_content_view,
|
|
'parsing_submit': permission_parse_document,
|
|
}
|
|
queryset = DocumentVersion.objects.all()
|
|
serializer_class = DocumentVersionParsingSerializer
|
|
|
|
@action(
|
|
detail=True, url_name='content', url_path='parsing'
|
|
)
|
|
def parsing_content(self, request, *args, **kwargs):
|
|
instance = self.get_object()
|
|
serializer = self.get_serializer(instance)
|
|
headers = self.get_success_headers(data=serializer.data)
|
|
return Response(
|
|
serializer.data, status=status.HTTP_200_OK, headers=headers
|
|
)
|
|
|
|
@action(
|
|
detail=True, methods=('post',), url_name='submit',
|
|
url_path='parsing/submit'
|
|
)
|
|
def parsing_submit(self, request, *args, **kwargs):
|
|
instance = self.get_object()
|
|
instance.submit_for_parsing(_user=request.user)
|
|
return Response(
|
|
data=None, status=status.HTTP_202_ACCEPTED
|
|
)
|
|
|
|
|
|
class DocumentPageParsingAPIViewSet(MayanAPIGenericViewSet):
|
|
lookup_url_kwarg = 'document_page_id'
|
|
object_permission_map = {
|
|
'parsing_content': permission_content_view,
|
|
}
|
|
serializer_class = DocumentPageParsingSerializer
|
|
|
|
def get_queryset(self):
|
|
return get_object_or_404(
|
|
klass=DocumentVersion, document_id=self.kwargs['document_id'],
|
|
pk=self.kwargs['document_version_id']
|
|
).pages.all()
|
|
|
|
@action(
|
|
detail=True, url_name='content', url_path='parsing'
|
|
)
|
|
def parsing_content(self, request, *args, **kwargs):
|
|
instance = self.get_object()
|
|
serializer = self.get_serializer(instance)
|
|
headers = self.get_success_headers(data=serializer.data)
|
|
return Response(
|
|
serializer.data, status=status.HTTP_200_OK, headers=headers
|
|
)
|