diff --git a/mayan/apps/ocr/__init__.py b/mayan/apps/ocr/__init__.py index 941a1a4168..ca3e5eab21 100644 --- a/mayan/apps/ocr/__init__.py +++ b/mayan/apps/ocr/__init__.py @@ -3,28 +3,27 @@ from __future__ import absolute_import import logging 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, post_syncdb from django.dispatch import receiver -from django.db.utils import DatabaseError +from django.utils.translation import ugettext +from django.utils.translation import ugettext_lazy as _ -from navigation.api import register_links, register_multi_item_links +from acls.api import class_permissions from documents.models import Document, DocumentVersion from main.api import register_maintenance_links +from navigation.api import register_links, register_multi_item_links from project_tools.api import register_tool -from acls.api import class_permissions - from scheduler.api import register_interval_job +from . import models as ocr_models from .conf.settings import (AUTOMATIC_OCR, QUEUE_PROCESSING_INTERVAL) +from .exceptions import AlreadyQueued from .models import DocumentQueue, QueueTransformation from .tasks import task_process_document_queues from .permissions import (PERMISSION_OCR_DOCUMENT, PERMISSION_OCR_DOCUMENT_DELETE, PERMISSION_OCR_QUEUE_ENABLE_DISABLE, PERMISSION_OCR_CLEAN_ALL_PAGES) -from .exceptions import AlreadyQueued -from . import models as ocr_models logger = logging.getLogger(__name__) diff --git a/mayan/apps/ocr/admin.py b/mayan/apps/ocr/admin.py index cdb22c7c5b..0210faf751 100644 --- a/mayan/apps/ocr/admin.py +++ b/mayan/apps/ocr/admin.py @@ -1,6 +1,8 @@ +from __future__ import absolute_import + from django.contrib import admin -from ocr.models import DocumentQueue, QueueDocument +from .models import DocumentQueue, QueueDocument class QueueDocumentInline(admin.StackedInline): diff --git a/mayan/apps/ocr/api.py b/mayan/apps/ocr/api.py index 33450b0862..5c52388f46 100644 --- a/mayan/apps/ocr/api.py +++ b/mayan/apps/ocr/api.py @@ -7,8 +7,8 @@ import subprocess import tempfile import sys -from django.utils.translation import ugettext as _ from django.utils.importlib import import_module +from django.utils.translation import ugettext as _ from common.conf.settings import TEMPORARY_DIRECTORY from converter.api import convert @@ -16,10 +16,10 @@ from documents.models import DocumentPage from .conf.settings import (TESSERACT_PATH, TESSERACT_LANGUAGE, UNPAPER_PATH) from .exceptions import TesseractError, UnpaperError -from .parsers import parse_document_page -from .parsers.exceptions import ParserError, ParserUnknownFile from .literals import (DEFAULT_OCR_FILE_FORMAT, UNPAPER_FILE_FORMAT, DEFAULT_OCR_FILE_EXTENSION) +from .parsers import parse_document_page +from .parsers.exceptions import ParserError, ParserUnknownFile def get_language_backend(): diff --git a/mayan/apps/ocr/forms.py b/mayan/apps/ocr/forms.py index ec4020dc20..19e8ea6805 100644 --- a/mayan/apps/ocr/forms.py +++ b/mayan/apps/ocr/forms.py @@ -1,6 +1,8 @@ +from __future__ import absolute_import + from django import forms -from ocr.models import QueueTransformation +from .models import QueueTransformation class QueueTransformationForm(forms.ModelForm): diff --git a/mayan/apps/ocr/literals.py b/mayan/apps/ocr/literals.py index 946c063e38..65b9d69ece 100644 --- a/mayan/apps/ocr/literals.py +++ b/mayan/apps/ocr/literals.py @@ -1,6 +1,5 @@ from django.utils.translation import ugettext_lazy as _ - DOCUMENTQUEUE_STATE_STOPPED = 's' DOCUMENTQUEUE_STATE_ACTIVE = 'a' @@ -9,7 +8,6 @@ DOCUMENTQUEUE_STATE_CHOICES = ( (DOCUMENTQUEUE_STATE_ACTIVE, _(u'active')), ) - QUEUEDOCUMENT_STATE_PENDING = 'p' QUEUEDOCUMENT_STATE_PROCESSING = 'i' QUEUEDOCUMENT_STATE_ERROR = 'e' diff --git a/mayan/apps/ocr/managers.py b/mayan/apps/ocr/managers.py index b4596356d6..edd24972f5 100644 --- a/mayan/apps/ocr/managers.py +++ b/mayan/apps/ocr/managers.py @@ -6,10 +6,11 @@ from .exceptions import AlreadyQueued class DocumentQueueManager(models.Manager): - ''' + """ Module manager class to handle adding documents to an OCR document queue - ''' + """ + def queue_document(self, document, queue_name='default'): document_queue = self.model.objects.get(name=queue_name) if document_queue.queuedocument_set.filter(document=document): diff --git a/mayan/apps/ocr/models.py b/mayan/apps/ocr/models.py index 895ad38999..fdf22a023a 100644 --- a/mayan/apps/ocr/models.py +++ b/mayan/apps/ocr/models.py @@ -4,23 +4,22 @@ from ast import literal_eval from datetime import datetime from django.db import models -from django.utils.translation import ugettext_lazy as _ -from django.utils.translation import ugettext -from django.core.exceptions import ObjectDoesNotExist -from django.contrib.contenttypes.models import ContentType +from django.core.exceptions import ObjectDoesNotExist, ValidationError from django.contrib.contenttypes import generic -from django.core.exceptions import ValidationError +from django.contrib.contenttypes.models import ContentType +from django.utils.translation import ugettext +from django.utils.translation import ugettext_lazy as _ from documents.models import Document from converter.api import get_available_transformations_choices from sources.managers import SourceTransformationManager +from .exceptions import ReQueueError from .literals import (DOCUMENTQUEUE_STATE_STOPPED, DOCUMENTQUEUE_STATE_CHOICES, QUEUEDOCUMENT_STATE_PENDING, QUEUEDOCUMENT_STATE_CHOICES, QUEUEDOCUMENT_STATE_PROCESSING, DOCUMENTQUEUE_STATE_ACTIVE) from .managers import DocumentQueueManager -from .exceptions import ReQueueError class DocumentQueue(models.Model): @@ -101,10 +100,10 @@ class ArgumentsValidator(object): class QueueTransformation(models.Model): - ''' + """ Model that stores the transformation and transformation arguments for a given document queue - ''' + """ content_type = models.ForeignKey(ContentType) object_id = models.PositiveIntegerField() content_object = generic.GenericForeignKey('content_type', 'object_id') diff --git a/mayan/apps/ocr/statistics.py b/mayan/apps/ocr/statistics.py index d6ceb9e198..590075c719 100644 --- a/mayan/apps/ocr/statistics.py +++ b/mayan/apps/ocr/statistics.py @@ -1,6 +1,8 @@ +from __future__ import absolute_import + from django.utils.translation import ugettext as _ -from ocr.models import DocumentQueue, QueueDocument +from .models import DocumentQueue, QueueDocument def get_statistics(): diff --git a/mayan/apps/ocr/tasks.py b/mayan/apps/ocr/tasks.py index 84d2c956d2..8725771f54 100644 --- a/mayan/apps/ocr/tasks.py +++ b/mayan/apps/ocr/tasks.py @@ -1,8 +1,8 @@ from __future__ import absolute_import from datetime import timedelta, datetime -import platform import logging +import platform from django.db.models import Q @@ -10,12 +10,12 @@ from job_processor.api import process_job from lock_manager import Lock, LockError from .api import do_document_ocr +from .conf.settings import (NODE_CONCURRENT_EXECUTION, REPLICATION_DELAY, + QUEUE_PROCESSING_INTERVAL) from .literals import (QUEUEDOCUMENT_STATE_PENDING, QUEUEDOCUMENT_STATE_PROCESSING, DOCUMENTQUEUE_STATE_ACTIVE, QUEUEDOCUMENT_STATE_ERROR) from .models import QueueDocument, DocumentQueue -from .conf.settings import (NODE_CONCURRENT_EXECUTION, REPLICATION_DELAY, - QUEUE_PROCESSING_INTERVAL) LOCK_EXPIRE = 60 * 10 # Lock expires in 10 minutes # TODO: Tie LOCK_EXPIRATION with hard task timeout diff --git a/mayan/apps/ocr/views.py b/mayan/apps/ocr/views.py index 001052d3d0..81efeadfa7 100644 --- a/mayan/apps/ocr/views.py +++ b/mayan/apps/ocr/views.py @@ -1,30 +1,30 @@ from __future__ import absolute_import +from django.contrib import messages +from django.core.exceptions import PermissionDenied +from django.core.urlresolvers import reverse from django.http import HttpResponseRedirect from django.shortcuts import render_to_response, get_object_or_404 from django.template import RequestContext -from django.contrib import messages -from common.backport.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 permissions.models import Permission +from acls.models import AccessEntry +from common.backport.generic.list_detail import object_list +from common.utils import encapsulate 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.models import Permission -from .permissions import (PERMISSION_OCR_DOCUMENT, - PERMISSION_OCR_DOCUMENT_DELETE, PERMISSION_OCR_QUEUE_ENABLE_DISABLE, - PERMISSION_OCR_CLEAN_ALL_PAGES, PERMISSION_OCR_QUEUE_EDIT) -from .models import DocumentQueue, QueueDocument, QueueTransformation +from .api import clean_pages +from .exceptions import AlreadyQueued, ReQueueError +from .forms import QueueTransformationForm, QueueTransformationForm_create from .literals import (QUEUEDOCUMENT_STATE_PENDING, QUEUEDOCUMENT_STATE_PROCESSING, DOCUMENTQUEUE_STATE_STOPPED, DOCUMENTQUEUE_STATE_ACTIVE) -from .exceptions import AlreadyQueued, ReQueueError -from .api import clean_pages -from .forms import QueueTransformationForm, QueueTransformationForm_create +from .models import DocumentQueue, QueueDocument, QueueTransformation +from .permissions import (PERMISSION_OCR_DOCUMENT, + PERMISSION_OCR_DOCUMENT_DELETE, PERMISSION_OCR_QUEUE_ENABLE_DISABLE, + PERMISSION_OCR_CLEAN_ALL_PAGES, PERMISSION_OCR_QUEUE_EDIT) def queue_document_list(request, queue_name='default'):