Update the ocr app to use the new class based permissions and remove initialization hack
This commit is contained in:
+12
-39
@@ -1,21 +1,13 @@
|
|||||||
try:
|
|
||||||
from psycopg2 import OperationalError
|
|
||||||
except ImportError:
|
|
||||||
class OperationalError(Exception):
|
|
||||||
pass
|
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from django.core.exceptions import ImproperlyConfigured
|
|
||||||
from django.db import transaction
|
from django.db import transaction
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
from django.utils.translation import ugettext
|
from django.utils.translation import ugettext
|
||||||
from django.db.utils import DatabaseError
|
|
||||||
from django.db.models.signals import post_save
|
from django.db.models.signals import post_save
|
||||||
from django.dispatch import receiver
|
from django.dispatch import receiver
|
||||||
|
|
||||||
from navigation.api import register_links, register_top_menu, register_multi_item_links
|
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 documents.models import Document
|
||||||
from main.api import register_maintenance_links
|
from main.api import register_maintenance_links
|
||||||
from project_tools.api import register_tool
|
from project_tools.api import register_tool
|
||||||
@@ -29,21 +21,13 @@ from ocr.tasks import task_process_document_queues
|
|||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
#Permissions
|
ocr_namespace = PermissionNamespace('ocr', _(u'OCR'))
|
||||||
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')}
|
|
||||||
|
|
||||||
set_namespace_title('ocr', _(u'OCR'))
|
PERMISSION_OCR_DOCUMENT = Permission.objects.register(ocr_namespace, 'ocr_document', _(u'Submit documents for OCR'))
|
||||||
register_permission(PERMISSION_OCR_DOCUMENT)
|
PERMISSION_OCR_DOCUMENT_DELETE = Permission.objects.register(ocr_namespace, 'ocr_document_delete', _(u'Delete documents from OCR queue'))
|
||||||
register_permission(PERMISSION_OCR_DOCUMENT_DELETE)
|
PERMISSION_OCR_QUEUE_ENABLE_DISABLE = Permission.objects.register(ocr_namespace, 'ocr_queue_enable_disable', _(u'Can enable/disable the OCR queue'))
|
||||||
register_permission(PERMISSION_OCR_QUEUE_ENABLE_DISABLE)
|
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'))
|
||||||
register_permission(PERMISSION_OCR_CLEAN_ALL_PAGES)
|
PERMISSION_OCR_QUEUE_EDIT = Permission.objects.register(ocr_namespace, 'ocr_queue_edit', _(u'Can edit an OCR queue properties'))
|
||||||
|
|
||||||
set_namespace_title('ocr_setup', _(u'OCR Setup'))
|
|
||||||
register_permission(PERMISSION_OCR_QUEUE_EDIT)
|
|
||||||
|
|
||||||
#Links
|
#Links
|
||||||
submit_document = {'text': _('submit to OCR queue'), 'view': 'submit_document', 'args': 'object.id', 'famfam': 'hourglass_add', 'permissions': [PERMISSION_OCR_DOCUMENT]}
|
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'))
|
register_maintenance_links([all_document_ocr_cleanup], namespace='ocr', title=_(u'OCR'))
|
||||||
|
|
||||||
|
|
||||||
@transaction.commit_manually
|
@transaction.commit_on_success
|
||||||
def create_default_queue():
|
def create_default_queue():
|
||||||
try:
|
default_queue, created = DocumentQueue.objects.get_or_create(name='default')
|
||||||
default_queue, created = DocumentQueue.objects.get_or_create(name='default')
|
if created:
|
||||||
if created:
|
default_queue.label = ugettext(u'Default')
|
||||||
default_queue.label = ugettext(u'Default')
|
default_queue.save()
|
||||||
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()
|
|
||||||
|
|
||||||
|
|
||||||
def document_post_save(sender, instance, **kwargs):
|
def document_post_save(sender, instance, **kwargs):
|
||||||
if kwargs.get('created', False):
|
if kwargs.get('created', False):
|
||||||
|
|||||||
+13
-13
@@ -9,7 +9,7 @@ from django.utils.translation import ugettext_lazy as _
|
|||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
|
|
||||||
from celery.task.control import inspect
|
from celery.task.control import inspect
|
||||||
from permissions.api import check_permissions
|
from permissions.models import Permission
|
||||||
from documents.models import Document
|
from documents.models import Document
|
||||||
from documents.widgets import document_link, document_thumbnail
|
from documents.widgets import document_link, document_thumbnail
|
||||||
from common.utils import encapsulate
|
from common.utils import encapsulate
|
||||||
@@ -28,7 +28,7 @@ from ocr.forms import QueueTransformationForm, QueueTransformationForm_create
|
|||||||
|
|
||||||
|
|
||||||
def queue_document_list(request, queue_name='default'):
|
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)
|
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):
|
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:
|
if queue_document_id:
|
||||||
queue_documents = [get_object_or_404(QueueDocument, pk=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):
|
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)
|
document = get_object_or_404(Document, pk=document_id)
|
||||||
return submit_document_to_queue(request, document=document,
|
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):
|
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:
|
if queue_document_id:
|
||||||
queue_documents = [get_object_or_404(QueueDocument, pk=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):
|
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)))
|
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)))
|
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):
|
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)))
|
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)))
|
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):
|
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)))
|
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)))
|
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):
|
def node_active_list(request):
|
||||||
check_permissions(request.user, [PERMISSION_OCR_DOCUMENT])
|
Permission.objects.check_permissions(request.user, [PERMISSION_OCR_DOCUMENT])
|
||||||
|
|
||||||
i = inspect()
|
i = inspect()
|
||||||
active_tasks = []
|
active_tasks = []
|
||||||
@@ -331,7 +331,7 @@ def node_active_list(request):
|
|||||||
|
|
||||||
|
|
||||||
def setup_queue_transformation_list(request, document_queue_id):
|
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)
|
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):
|
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)
|
transformation = get_object_or_404(QueueTransformation, pk=transformation_id)
|
||||||
redirect_view = reverse('setup_queue_transformation_list', args=[transformation.content_object.pk])
|
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):
|
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)
|
transformation = get_object_or_404(QueueTransformation, pk=transformation_id)
|
||||||
redirect_view = reverse('setup_queue_transformation_list', args=[transformation.content_object.pk])
|
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):
|
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)
|
document_queue = get_object_or_404(DocumentQueue, pk=document_queue_id)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user