From 314029fe3d48c6cc151b71fb0cdbdc23aa578dca Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Thu, 8 Dec 2011 16:46:25 -0400 Subject: [PATCH] Update the ocr app to use the new class based permissions and remove initialization hack --- apps/ocr/__init__.py | 51 +++++++++++--------------------------------- apps/ocr/views.py | 26 +++++++++++----------- 2 files changed, 25 insertions(+), 52 deletions(-) diff --git a/apps/ocr/__init__.py b/apps/ocr/__init__.py index b07fa07d72..052b228821 100644 --- a/apps/ocr/__init__.py +++ b/apps/ocr/__init__.py @@ -1,21 +1,13 @@ -try: - from psycopg2 import OperationalError -except ImportError: - class OperationalError(Exception): - pass - import logging -from django.core.exceptions import ImproperlyConfigured from django.db import transaction from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext -from django.db.utils import DatabaseError from django.db.models.signals import post_save from django.dispatch import receiver from navigation.api import register_links, register_top_menu, register_multi_item_links -from permissions.api import register_permission, set_namespace_title +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 @@ -29,21 +21,13 @@ from ocr.tasks import task_process_document_queues logger = logging.getLogger(__name__) -#Permissions -PERMISSION_OCR_DOCUMENT = {'namespace': 'ocr', 'name': 'ocr_document', 'label': _(u'Submit document for OCR')} -PERMISSION_OCR_DOCUMENT_DELETE = {'namespace': 'ocr', 'name': 'ocr_document_delete', 'label': _(u'Delete document for OCR queue')} -PERMISSION_OCR_QUEUE_ENABLE_DISABLE = {'namespace': 'ocr', 'name': 'ocr_queue_enable_disable', 'label': _(u'Can enable/disable an OCR queue')} -PERMISSION_OCR_CLEAN_ALL_PAGES = {'namespace': 'ocr', 'name': 'ocr_clean_all_pages', 'label': _(u'Can execute an OCR clean up on all document pages')} -PERMISSION_OCR_QUEUE_EDIT = {'namespace': 'ocr_setup', 'name': 'ocr_queue_edit', 'label': _(u'Can edit an OCR queue properties')} +ocr_namespace = PermissionNamespace('ocr', _(u'OCR')) -set_namespace_title('ocr', _(u'OCR')) -register_permission(PERMISSION_OCR_DOCUMENT) -register_permission(PERMISSION_OCR_DOCUMENT_DELETE) -register_permission(PERMISSION_OCR_QUEUE_ENABLE_DISABLE) -register_permission(PERMISSION_OCR_CLEAN_ALL_PAGES) - -set_namespace_title('ocr_setup', _(u'OCR Setup')) -register_permission(PERMISSION_OCR_QUEUE_EDIT) +PERMISSION_OCR_DOCUMENT = Permission.objects.register(ocr_namespace, 'ocr_document', _(u'Submit documents for OCR')) +PERMISSION_OCR_DOCUMENT_DELETE = Permission.objects.register(ocr_namespace, 'ocr_document_delete', _(u'Delete documents from OCR queue')) +PERMISSION_OCR_QUEUE_ENABLE_DISABLE = Permission.objects.register(ocr_namespace, 'ocr_queue_enable_disable', _(u'Can enable/disable the OCR queue')) +PERMISSION_OCR_CLEAN_ALL_PAGES = Permission.objects.register(ocr_namespace, 'ocr_clean_all_pages', _(u'Can execute the OCR clean up on all document pages')) +PERMISSION_OCR_QUEUE_EDIT = Permission.objects.register(ocr_namespace, 'ocr_queue_edit', _(u'Can edit an OCR queue properties')) #Links submit_document = {'text': _('submit to OCR queue'), 'view': 'submit_document', 'args': 'object.id', 'famfam': 'hourglass_add', 'permissions': [PERMISSION_OCR_DOCUMENT]} @@ -82,23 +66,12 @@ register_links(['setup_queue_transformation_edit', 'setup_queue_transformation_d register_maintenance_links([all_document_ocr_cleanup], namespace='ocr', title=_(u'OCR')) -@transaction.commit_manually +@transaction.commit_on_success def create_default_queue(): - try: - default_queue, created = DocumentQueue.objects.get_or_create(name='default') - if created: - default_queue.label = ugettext(u'Default') - default_queue.save() - except DatabaseError: - transaction.rollback() - # Special case for ./manage.py syncdb - except (OperationalError, ImproperlyConfigured): - transaction.rollback() - # Special for DjangoZoom, which executes collectstatic media - # doing syncdb and creating the database tables - else: - transaction.commit() - + default_queue, created = DocumentQueue.objects.get_or_create(name='default') + if created: + default_queue.label = ugettext(u'Default') + default_queue.save() def document_post_save(sender, instance, **kwargs): if kwargs.get('created', False): diff --git a/apps/ocr/views.py b/apps/ocr/views.py index 8fbc40d444..26c030970f 100644 --- a/apps/ocr/views.py +++ b/apps/ocr/views.py @@ -9,7 +9,7 @@ from django.utils.translation import ugettext_lazy as _ from django.core.urlresolvers import reverse from celery.task.control import inspect -from permissions.api import check_permissions +from permissions.models import Permission from documents.models import Document from documents.widgets import document_link, document_thumbnail from common.utils import encapsulate @@ -28,7 +28,7 @@ from ocr.forms import QueueTransformationForm, QueueTransformationForm_create def queue_document_list(request, queue_name='default'): - check_permissions(request.user, [PERMISSION_OCR_DOCUMENT]) + Permission.objects.check_permissions(request.user, [PERMISSION_OCR_DOCUMENT]) document_queue = get_object_or_404(DocumentQueue, name=queue_name) @@ -68,7 +68,7 @@ def queue_document_list(request, queue_name='default'): def queue_document_delete(request, queue_document_id=None, queue_document_id_list=None): - check_permissions(request.user, [PERMISSION_OCR_DOCUMENT_DELETE]) + Permission.objects.check_permissions(request.user, [PERMISSION_OCR_DOCUMENT_DELETE]) if queue_document_id: queue_documents = [get_object_or_404(QueueDocument, pk=queue_document_id)] @@ -125,7 +125,7 @@ def submit_document_multiple(request): def submit_document(request, document_id): - check_permissions(request.user, [PERMISSION_OCR_DOCUMENT]) + Permission.objects.check_permissions(request.user, [PERMISSION_OCR_DOCUMENT]) document = get_object_or_404(Document, pk=document_id) return submit_document_to_queue(request, document=document, @@ -150,7 +150,7 @@ def submit_document_to_queue(request, document, post_submit_redirect=None): def re_queue_document(request, queue_document_id=None, queue_document_id_list=None): - check_permissions(request.user, [PERMISSION_OCR_DOCUMENT]) + Permission.objects.check_permissions(request.user, [PERMISSION_OCR_DOCUMENT]) if queue_document_id: queue_documents = [get_object_or_404(QueueDocument, pk=queue_document_id)] @@ -204,7 +204,7 @@ def re_queue_multiple_document(request): def document_queue_disable(request, document_queue_id): - check_permissions(request.user, [PERMISSION_OCR_QUEUE_ENABLE_DISABLE]) + Permission.objects.check_permissions(request.user, [PERMISSION_OCR_QUEUE_ENABLE_DISABLE]) next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', None))) previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', None))) @@ -231,7 +231,7 @@ def document_queue_disable(request, document_queue_id): def document_queue_enable(request, document_queue_id): - check_permissions(request.user, [PERMISSION_OCR_QUEUE_ENABLE_DISABLE]) + Permission.objects.check_permissions(request.user, [PERMISSION_OCR_QUEUE_ENABLE_DISABLE]) next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', None))) previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', None))) @@ -258,7 +258,7 @@ def document_queue_enable(request, document_queue_id): def all_document_ocr_cleanup(request): - check_permissions(request.user, [PERMISSION_OCR_CLEAN_ALL_PAGES]) + Permission.objects.check_permissions(request.user, [PERMISSION_OCR_CLEAN_ALL_PAGES]) previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', None))) next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', None))) @@ -295,7 +295,7 @@ def display_link(obj): def node_active_list(request): - check_permissions(request.user, [PERMISSION_OCR_DOCUMENT]) + Permission.objects.check_permissions(request.user, [PERMISSION_OCR_DOCUMENT]) i = inspect() active_tasks = [] @@ -331,7 +331,7 @@ def node_active_list(request): def setup_queue_transformation_list(request, document_queue_id): - check_permissions(request.user, [PERMISSION_OCR_QUEUE_EDIT]) + Permission.objects.check_permissions(request.user, [PERMISSION_OCR_QUEUE_EDIT]) document_queue = get_object_or_404(DocumentQueue, pk=document_queue_id) @@ -356,7 +356,7 @@ def setup_queue_transformation_list(request, document_queue_id): def setup_queue_transformation_edit(request, transformation_id): - check_permissions(request.user, [PERMISSION_OCR_QUEUE_EDIT]) + Permission.objects.check_permissions(request.user, [PERMISSION_OCR_QUEUE_EDIT]) transformation = get_object_or_404(QueueTransformation, pk=transformation_id) redirect_view = reverse('setup_queue_transformation_list', args=[transformation.content_object.pk]) @@ -389,7 +389,7 @@ def setup_queue_transformation_edit(request, transformation_id): def setup_queue_transformation_delete(request, transformation_id): - check_permissions(request.user, [PERMISSION_OCR_QUEUE_EDIT]) + Permission.objects.check_permissions(request.user, [PERMISSION_OCR_QUEUE_EDIT]) transformation = get_object_or_404(QueueTransformation, pk=transformation_id) redirect_view = reverse('setup_queue_transformation_list', args=[transformation.content_object.pk]) @@ -423,7 +423,7 @@ def setup_queue_transformation_delete(request, transformation_id): def setup_queue_transformation_create(request, document_queue_id): - check_permissions(request.user, [PERMISSION_OCR_QUEUE_EDIT]) + Permission.objects.check_permissions(request.user, [PERMISSION_OCR_QUEUE_EDIT]) document_queue = get_object_or_404(DocumentQueue, pk=document_queue_id)