From ad7a5d8244a811daab20e3bc6671be8b6fdf7a1b Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Fri, 19 Jun 2015 19:07:44 -0400 Subject: [PATCH] Update document OCR submit views to CBV views --- mayan/apps/ocr/urls.py | 5 +-- mayan/apps/ocr/views.py | 79 +++++++++++++++++++++++++++++------------ 2 files changed, 59 insertions(+), 25 deletions(-) diff --git a/mayan/apps/ocr/urls.py b/mayan/apps/ocr/urls.py index 9805a86ce5..f8efb32e0f 100644 --- a/mayan/apps/ocr/urls.py +++ b/mayan/apps/ocr/urls.py @@ -3,12 +3,13 @@ from __future__ import unicode_literals from django.conf.urls import patterns, url from .api_views import DocumentVersionOCRView +from .views import DocumentSubmitView, DocumentManySubmitView urlpatterns = patterns( 'ocr.views', url(r'^(?P\d+)/content/$', 'document_content', name='document_content'), - url(r'^document/(?P\d+)/submit/$', 'document_submit', name='document_submit'), - url(r'^document/multiple/submit/$', 'document_submit_multiple', name='document_submit_multiple'), + url(r'^document/(?P\d+)/submit/$', DocumentSubmitView.as_view(), name='document_submit'), + url(r'^document/multiple/submit/$', DocumentManySubmitView.as_view(), name='document_submit_multiple'), url(r'^all/$', 'entry_list', name='entry_list'), url(r'^(?P\d+)/delete/$', 'entry_delete', name='entry_delete'), diff --git a/mayan/apps/ocr/views.py b/mayan/apps/ocr/views.py index e9b9e45ba4..dd01419311 100644 --- a/mayan/apps/ocr/views.py +++ b/mayan/apps/ocr/views.py @@ -10,6 +10,7 @@ from django.template import RequestContext from django.utils.translation import ugettext_lazy as _, ungettext from acls.models import AccessEntry +from common.views import ConfirmView from documents.models import Document, DocumentVersion from permissions.models import Permission @@ -21,6 +22,61 @@ from .permissions import ( ) +class DocumentSubmitView(ConfirmView): + def get_context_data(self, **kwargs): + context = super(DocumentSubmitView, self).get_context_data(**kwargs) + + context.update( + { + 'title': _('Are you sure you wish to submit the selected document for OCR?') + } + ) + + return context + + def object_action(self, request, obj): + document = obj + + 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() + messages.success(request, _('Document: %(document)s was added to the OCR queue.') % { + 'document': document} + ) + + def post(self, request, *args, **kwargs): + document = get_object_or_404(Document, pk=self.kwargs['pk']) + self.object_action(request=request, obj=document) + + return HttpResponseRedirect(self.get_success_url()) + + +class DocumentManySubmitView(DocumentSubmitView): + def get_context_data(self, **kwargs): + context = super(DocumentSubmitView, self).get_context_data(**kwargs) + + context.update( + { + 'title': _('Are you sure you wish to submit the selected documents for OCR?') + } + ) + + return context + + def post(self, request, *args, **kwargs): + for pk in request.GET.get('id_list', '').split(','): + document = get_object_or_404(Document, pk=pk) + try: + self.object_action(request=request, obj=document) + except PermissionDenied: + pass + + return HttpResponseRedirect(self.get_success_url()) + + def document_content(request, document_id): document = get_object_or_404(Document, pk=document_id) @@ -43,29 +99,6 @@ def document_content(request, document_id): }, context_instance=RequestContext(request)) -def document_submit(request, pk): - document = get_object_or_404(Document, pk=pk) - - 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() - messages.success(request, _('Document: %(document)s was added to the OCR queue.') % { - 'document': document} - ) - - return HttpResponseRedirect(request.META.get('HTTP_REFERER', reverse(settings.LOGIN_REDIRECT_URL))) - - -def document_submit_multiple(request): - for item_id in request.GET.get('id_list', '').split(','): - document_submit(request, item_id) - - return HttpResponseRedirect(request.META.get('HTTP_REFERER', reverse(settings.LOGIN_REDIRECT_URL))) - - def entry_list(request): Permission.objects.check_permissions(request.user, [PERMISSION_OCR_DOCUMENT])