Close issue #112, Add OCR API endpoints
This commit is contained in:
@@ -14,6 +14,7 @@ from main.api import register_maintenance_links
|
||||
from navigation.api import register_links
|
||||
from navigation.links import link_spacer
|
||||
from project_tools.api import register_tool
|
||||
from rest_api.classes import APIEndPoint
|
||||
|
||||
from .links import (all_document_ocr_cleanup, ocr_tool_link,
|
||||
queue_document_list, queue_document_multiple_delete,
|
||||
@@ -56,3 +57,5 @@ Document.add_to_class('submit_for_ocr', document_ocr_submit)
|
||||
class_permissions(Document, [PERMISSION_OCR_DOCUMENT])
|
||||
|
||||
register_tool(ocr_tool_link)
|
||||
|
||||
APIEndPoint('ocr')
|
||||
|
||||
50
mayan/apps/ocr/api_views.py
Normal file
50
mayan/apps/ocr/api_views.py
Normal file
@@ -0,0 +1,50 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
from django.core.exceptions import PermissionDenied
|
||||
from django.shortcuts import get_object_or_404
|
||||
|
||||
from rest_framework import generics, status
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.settings import api_settings
|
||||
|
||||
from acls.models import AccessEntry
|
||||
from documents.models import Document
|
||||
from permissions.models import Permission
|
||||
from rest_api.filters import MayanObjectPermissionsFilter
|
||||
from rest_api.permissions import MayanPermission
|
||||
|
||||
from .permissions import PERMISSION_OCR_DOCUMENT
|
||||
from .serializers import DocumentOCRSerializer
|
||||
|
||||
|
||||
class DocumentOCRView(generics.GenericAPIView):
|
||||
serializer_class = DocumentOCRSerializer
|
||||
|
||||
permission_classes = (MayanPermission,)
|
||||
|
||||
def post(self, request, *args, **kwargs):
|
||||
"""Submit document OCR queue."""
|
||||
|
||||
serializer = self.get_serializer(data=request.DATA, files=request.FILES)
|
||||
|
||||
if serializer.is_valid():
|
||||
document = get_object_or_404(Document, pk=serializer.data['document_id'])
|
||||
|
||||
try:
|
||||
Permission.objects.check_permissions(request.user, [PERMISSION_OCR_DOCUMENT])
|
||||
except PermissionDenied:
|
||||
AccessEntry.objects.check_access(PERMISSION_OCR_DOCUMENT, request.user, document)
|
||||
|
||||
document.submit_for_ocr()
|
||||
|
||||
headers = self.get_success_headers(serializer.data)
|
||||
return Response(serializer.data, status=status.HTTP_202_ACCEPTED,
|
||||
headers=headers)
|
||||
|
||||
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
def get_success_headers(self, data):
|
||||
try:
|
||||
return {'Location': data[api_settings.URL_FIELD_NAME]}
|
||||
except (TypeError, KeyError):
|
||||
return {}
|
||||
9
mayan/apps/ocr/serializers.py
Normal file
9
mayan/apps/ocr/serializers.py
Normal file
@@ -0,0 +1,9 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
from rest_framework import serializers
|
||||
|
||||
from .models import Document
|
||||
|
||||
|
||||
class DocumentOCRSerializer(serializers.Serializer):
|
||||
document_id = serializers.IntegerField()
|
||||
@@ -1,5 +1,7 @@
|
||||
from django.conf.urls import patterns, url
|
||||
|
||||
from .api_views import DocumentOCRView
|
||||
|
||||
urlpatterns = patterns('ocr.views',
|
||||
url(r'^document/(?P<document_id>\d+)/submit/$', 'submit_document', (), 'submit_document'),
|
||||
url(r'^document/multiple/submit/$', 'submit_document_multiple', (), 'submit_document_multiple'),
|
||||
@@ -9,4 +11,9 @@ urlpatterns = patterns('ocr.views',
|
||||
url(r'^queue/document/(?P<queue_document_id>\d+)/re-queue/$', 're_queue_document', (), 're_queue_document'),
|
||||
url(r'^queue/document/multiple/re-queue/$', 're_queue_multiple_document', (), 're_queue_multiple_document'),
|
||||
|
||||
url(r'^document/all/clean_up/$', 'all_document_ocr_cleanup', (), 'all_document_ocr_cleanup'),)
|
||||
url(r'^document/all/clean_up/$', 'all_document_ocr_cleanup', (), 'all_document_ocr_cleanup'),
|
||||
)
|
||||
|
||||
api_urls = patterns('',
|
||||
url(r'^submit/$', DocumentOCRView.as_view(), name='document-ocr-submit-view'),
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user