From 1f44b1bc6cb1edc70d9cca2c5574f168bc0854cd Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Tue, 3 Jan 2012 04:37:30 -0400 Subject: [PATCH] Add ACL support to the OCR app --- apps/ocr/__init__.py | 5 +++++ apps/ocr/views.py | 15 ++++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/apps/ocr/__init__.py b/apps/ocr/__init__.py index 403202b49f..bf2321c698 100644 --- a/apps/ocr/__init__.py +++ b/apps/ocr/__init__.py @@ -13,6 +13,7 @@ from permissions.models import Permission, PermissionNamespace from documents.models import Document from main.api import register_maintenance_links from project_tools.api import register_tool +from acls.api import class_permissions from scheduler.api import register_interval_job @@ -92,3 +93,7 @@ create_default_queue() register_interval_job('task_process_document_queues', _(u'Checks the OCR queue for pending documents.'), task_process_document_queues, seconds=QUEUE_PROCESSING_INTERVAL) register_tool(ocr_tool_link) + +class_permissions(Document, [ + PERMISSION_OCR_DOCUMENT, +]) diff --git a/apps/ocr/views.py b/apps/ocr/views.py index 6c37f62ce0..be640952b4 100644 --- a/apps/ocr/views.py +++ b/apps/ocr/views.py @@ -9,12 +9,14 @@ from django.contrib import messages from django.views.generic.list_detail import object_list from django.utils.translation import ugettext_lazy as _ from django.core.urlresolvers import reverse +from django.core.exceptions import PermissionDenied from celery.task.control import inspect from permissions.models import Permission from documents.models import Document from documents.widgets import document_link, document_thumbnail from common.utils import encapsulate +from acls.models import AccessEntry from .permissions import (PERMISSION_OCR_DOCUMENT, PERMISSION_OCR_DOCUMENT_DELETE, PERMISSION_OCR_QUEUE_ENABLE_DISABLE, @@ -126,15 +128,21 @@ def submit_document_multiple(request): def submit_document(request, document_id): - Permission.objects.check_permissions(request.user, [PERMISSION_OCR_DOCUMENT]) - document = get_object_or_404(Document, pk=document_id) + + try: + Permission.objects.check_permissions(request.user, [PERMISSION_OCR_DOCUMENT]) + except PermissionDenied: + AccessEntry.objects.check_access(PERMISSION_OCR_DOCUMENT, request.user, document) + return submit_document_to_queue(request, document=document, post_submit_redirect=request.META.get('HTTP_REFERER', '/')) def submit_document_to_queue(request, document, post_submit_redirect=None): - """This view is meant to be reusable""" + ''' + This view is meant to be reusable + ''' try: document_queue = DocumentQueue.objects.queue_document(document) @@ -331,6 +339,7 @@ def node_active_list(request): }, context_instance=RequestContext(request)) +# Setup views def setup_queue_transformation_list(request, document_queue_id): Permission.objects.check_permissions(request.user, [PERMISSION_OCR_QUEUE_EDIT])