Files
mayan-edms/mayan/apps/ocr/api_views.py
Roberto Rosario 84493b7a72 PEP8 Cleanups
2014-11-11 14:58:37 -04:00

50 lines
1.7 KiB
Python

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.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 {}