diff --git a/mayan/apps/ocr/__init__.py b/mayan/apps/ocr/__init__.py index da670a1ef4..2b8d6d69ef 100644 --- a/mayan/apps/ocr/__init__.py +++ b/mayan/apps/ocr/__init__.py @@ -23,10 +23,8 @@ from .links import (submit_document, submit_document_multiple, re_queue_multiple_document, queue_document_multiple_delete, document_queue_disable, document_queue_enable, all_document_ocr_cleanup, queue_document_list, - ocr_tool_link, setup_queue_transformation_list, - setup_queue_transformation_create, setup_queue_transformation_edit, - setup_queue_transformation_delete) -from .models import DocumentQueue, QueueTransformation + ocr_tool_link) +from .models import DocumentQueue from .permissions import PERMISSION_OCR_DOCUMENT from .tasks import task_process_document_queues @@ -36,13 +34,11 @@ logger = logging.getLogger(__name__) register_links(Document, [submit_document]) register_multi_item_links(['document_find_duplicates', 'folder_view', 'index_instance_node_view', 'document_type_document_list', 'search', 'results', 'document_group_view', 'document_list', 'document_list_recent', 'tag_tagged_item_list'], [submit_document_multiple]) -register_links(DocumentQueue, [document_queue_disable, document_queue_enable, setup_queue_transformation_list]) -register_links(QueueTransformation, [setup_queue_transformation_edit, setup_queue_transformation_delete]) +register_links(DocumentQueue, [document_queue_disable, document_queue_enable]) register_multi_item_links(['queue_document_list'], [re_queue_multiple_document, queue_document_multiple_delete]) -register_links(['setup_queue_transformation_create', 'setup_queue_transformation_edit', 'setup_queue_transformation_delete', 'document_queue_disable', 'document_queue_enable', 'queue_document_list', 'setup_queue_transformation_list'], [queue_document_list], menu_name='secondary_menu') -register_links(['setup_queue_transformation_edit', 'setup_queue_transformation_delete', 'setup_queue_transformation_list', 'setup_queue_transformation_create'], [setup_queue_transformation_create], menu_name='sidebar') +register_links(['document_queue_disable', 'document_queue_enable', 'queue_document_list'], [queue_document_list], menu_name='secondary_menu') register_maintenance_links([all_document_ocr_cleanup], namespace='ocr', title=_(u'OCR')) diff --git a/mayan/apps/ocr/forms.py b/mayan/apps/ocr/forms.py deleted file mode 100644 index 19e8ea6805..0000000000 --- a/mayan/apps/ocr/forms.py +++ /dev/null @@ -1,21 +0,0 @@ -from __future__ import absolute_import - -from django import forms - -from .models import QueueTransformation - - -class QueueTransformationForm(forms.ModelForm): - class Meta: - model = QueueTransformation - - def __init__(self, *args, **kwargs): - super(QueueTransformationForm, self).__init__(*args, **kwargs) - self.fields['content_type'].widget = forms.HiddenInput() - self.fields['object_id'].widget = forms.HiddenInput() - - -class QueueTransformationForm_create(forms.ModelForm): - class Meta: - model = QueueTransformation - exclude = ('content_type', 'object_id') diff --git a/mayan/apps/ocr/links.py b/mayan/apps/ocr/links.py index b84e818224..2cebdead18 100644 --- a/mayan/apps/ocr/links.py +++ b/mayan/apps/ocr/links.py @@ -20,8 +20,3 @@ all_document_ocr_cleanup = {'text': _(u'clean up pages content'), 'view': 'all_d queue_document_list = {'text': _(u'queue document list'), 'view': 'queue_document_list', 'famfam': 'hourglass', 'permissions': [PERMISSION_OCR_DOCUMENT]} ocr_tool_link = {'text': _(u'OCR'), 'view': 'queue_document_list', 'famfam': 'hourglass', 'icon': 'text.png', 'permissions': [PERMISSION_OCR_DOCUMENT], 'children_view_regex': [r'queue_', r'document_queue']} - -setup_queue_transformation_list = {'text': _(u'transformations'), 'view': 'setup_queue_transformation_list', 'args': 'queue.pk', 'famfam': 'shape_move_front'} -setup_queue_transformation_create = {'text': _(u'add transformation'), 'view': 'setup_queue_transformation_create', 'args': 'queue.pk', 'famfam': 'shape_square_add'} -setup_queue_transformation_edit = {'text': _(u'edit'), 'view': 'setup_queue_transformation_edit', 'args': 'transformation.pk', 'famfam': 'shape_square_edit'} -setup_queue_transformation_delete = {'text': _(u'delete'), 'view': 'setup_queue_transformation_delete', 'args': 'transformation.pk', 'famfam': 'shape_square_delete'} diff --git a/mayan/apps/ocr/models.py b/mayan/apps/ocr/models.py index d82935d365..4f68a9a05b 100644 --- a/mayan/apps/ocr/models.py +++ b/mayan/apps/ocr/models.py @@ -1,18 +1,13 @@ from __future__ import absolute_import -from ast import literal_eval from datetime import datetime from django.db import models -from django.core.exceptions import ObjectDoesNotExist, ValidationError -from django.contrib.contenttypes import generic -from django.contrib.contenttypes.models import ContentType +from django.core.exceptions import ObjectDoesNotExist 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_CHOICES, @@ -56,9 +51,6 @@ class QueueDocument(models.Model): verbose_name = _(u'queue document') verbose_name_plural = _(u'queue documents') - def get_transformation_list(self): - return QueueTransformation.transformations.get_for_object_as_list(self) - def requeue(self): if self.state == QUEUEDOCUMENT_STATE_PROCESSING: raise ReQueueError @@ -75,48 +67,3 @@ class QueueDocument(models.Model): return unicode(self.document) except ObjectDoesNotExist: return ugettext(u'Missing document.') - - -class ArgumentsValidator(object): - message = _(u'Enter a valid value.') - code = 'invalid' - - def __init__(self, message=None, code=None): - if message is not None: - self.message = message - if code is not None: - self.code = code - - def __call__(self, value): - """ - Validates that the input evaluates correctly. - """ - value = value.strip() - try: - literal_eval(value) - except (ValueError, SyntaxError): - raise ValidationError(self.message, code=self.code) - - -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') - order = models.PositiveIntegerField(default=0, blank=True, null=True, verbose_name=_(u'order'), db_index=True) - transformation = models.CharField(choices=get_available_transformations_choices(), max_length=128, verbose_name=_(u'transformation')) - arguments = models.TextField(blank=True, null=True, verbose_name=_(u'arguments'), help_text=_(u'Use dictionaries to indentify arguments, example: %s') % u'{\'degrees\':90}', validators=[ArgumentsValidator()]) - - objects = models.Manager() - transformations = SourceTransformationManager() - - def __unicode__(self): - return self.get_transformation_display() - - class Meta: - ordering = ('order',) - verbose_name = _(u'document queue transformation') - verbose_name_plural = _(u'document queue transformations') diff --git a/mayan/apps/ocr/urls.py b/mayan/apps/ocr/urls.py index d77be818f8..5c15891dfb 100644 --- a/mayan/apps/ocr/urls.py +++ b/mayan/apps/ocr/urls.py @@ -12,10 +12,4 @@ urlpatterns = patterns('ocr.views', url(r'^queue/(?P\d+)/enable/$', 'document_queue_enable', (), 'document_queue_enable'), url(r'^queue/(?P\d+)/disable/$', 'document_queue_disable', (), 'document_queue_disable'), - url(r'^document/all/clean_up/$', 'all_document_ocr_cleanup', (), 'all_document_ocr_cleanup'), - - url(r'^queue/(?P\d+)/transformation/list/$', 'setup_queue_transformation_list', (), 'setup_queue_transformation_list'), - url(r'^queue/(?P\w+)/transformation/create/$', 'setup_queue_transformation_create', (), 'setup_queue_transformation_create'), - url(r'^queue/transformation/(?P\w+)/edit/$', 'setup_queue_transformation_edit', (), 'setup_queue_transformation_edit'), - url(r'^queue/transformation/(?P\w+)/delete/$', 'setup_queue_transformation_delete', (), 'setup_queue_transformation_delete'), -) + url(r'^document/all/clean_up/$', 'all_document_ocr_cleanup', (), 'all_document_ocr_cleanup'),) diff --git a/mayan/apps/ocr/views.py b/mayan/apps/ocr/views.py index a97873d792..eaef19db2f 100644 --- a/mayan/apps/ocr/views.py +++ b/mayan/apps/ocr/views.py @@ -2,7 +2,6 @@ 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 @@ -17,13 +16,12 @@ from permissions.models import Permission from .api import clean_pages from .exceptions import AlreadyQueued, ReQueueError -from .forms import QueueTransformationForm, QueueTransformationForm_create from .literals import (QUEUEDOCUMENT_STATE_PROCESSING, DOCUMENTQUEUE_STATE_STOPPED, DOCUMENTQUEUE_STATE_ACTIVE) -from .models import DocumentQueue, QueueDocument, QueueTransformation +from .models import DocumentQueue, QueueDocument from .permissions import (PERMISSION_OCR_DOCUMENT, PERMISSION_OCR_DOCUMENT_DELETE, PERMISSION_OCR_QUEUE_ENABLE_DISABLE, - PERMISSION_OCR_CLEAN_ALL_PAGES, PERMISSION_OCR_QUEUE_EDIT) + PERMISSION_OCR_CLEAN_ALL_PAGES) def queue_document_list(request, queue_name='default'): @@ -299,124 +297,3 @@ def display_link(obj): return u''.join(output) else: return obj - - -# Setup views -def setup_queue_transformation_list(request, document_queue_id): - Permission.objects.check_permissions(request.user, [PERMISSION_OCR_QUEUE_EDIT]) - - document_queue = get_object_or_404(DocumentQueue, pk=document_queue_id) - - context = { - 'object_list': QueueTransformation.transformations.get_for_object(document_queue), - 'title': _(u'transformations for: %s') % document_queue, - 'queue': document_queue, - 'object_name': _(u'document queue'), - 'navigation_object_name': 'queue', - 'list_object_variable_name': 'transformation', - 'extra_columns': [ - {'name': _(u'order'), 'attribute': 'order'}, - {'name': _(u'transformation'), 'attribute': encapsulate(lambda x: x.get_transformation_display())}, - {'name': _(u'arguments'), 'attribute': 'arguments'} - ], - 'hide_link': True, - 'hide_object': True, - } - - return render_to_response('generic_list.html', context, - context_instance=RequestContext(request)) - - -def setup_queue_transformation_edit(request, transformation_id): - 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]) - next = request.POST.get('next', request.GET.get('next', request.META.get('HTTP_REFERER', redirect_view))) - - if request.method == 'POST': - form = QueueTransformationForm(instance=transformation, data=request.POST) - if form.is_valid(): - try: - form.save() - messages.success(request, _(u'Queue transformation edited successfully')) - return HttpResponseRedirect(next) - except Exception, e: - messages.error(request, _(u'Error editing queue transformation; %s') % e) - else: - form = QueueTransformationForm(instance=transformation) - - return render_to_response('generic_form.html', { - 'title': _(u'Edit transformation: %s') % transformation, - 'form': form, - 'queue': transformation.content_object, - 'transformation': transformation, - 'navigation_object_list': [ - {'object': 'queue', 'name': _(u'document queue')}, - {'object': 'transformation', 'name': _(u'transformation')} - ], - 'next': next, - }, context_instance=RequestContext(request)) - - -def setup_queue_transformation_delete(request, transformation_id): - 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]) - previous = request.POST.get('previous', request.GET.get('previous', request.META.get('HTTP_REFERER', redirect_view))) - - if request.method == 'POST': - try: - transformation.delete() - messages.success(request, _(u'Queue transformation deleted successfully.')) - except Exception, e: - messages.error(request, _(u'Error deleting queue transformation; %(error)s') % { - 'error': e} - ) - return HttpResponseRedirect(redirect_view) - - return render_to_response('generic_confirm.html', { - 'delete_view': True, - 'transformation': transformation, - 'queue': transformation.content_object, - 'navigation_object_list': [ - {'object': 'queue', 'name': _(u'document queue')}, - {'object': 'transformation', 'name': _(u'transformation')} - ], - 'title': _(u'Are you sure you wish to delete queue transformation "%(transformation)s"') % { - 'transformation': transformation.get_transformation_display(), - }, - 'previous': previous, - 'form_icon': u'shape_square_delete.png', - }, context_instance=RequestContext(request)) - - -def setup_queue_transformation_create(request, document_queue_id): - Permission.objects.check_permissions(request.user, [PERMISSION_OCR_QUEUE_EDIT]) - - document_queue = get_object_or_404(DocumentQueue, pk=document_queue_id) - - redirect_view = reverse('setup_queue_transformation_list', args=[document_queue.pk]) - - if request.method == 'POST': - form = QueueTransformationForm_create(request.POST) - if form.is_valid(): - try: - queue_tranformation = form.save(commit=False) - queue_tranformation.content_object = document_queue - queue_tranformation.save() - messages.success(request, _(u'Queue transformation created successfully')) - return HttpResponseRedirect(redirect_view) - except Exception, e: - messages.error(request, _(u'Error creating queue transformation; %s') % e) - else: - form = QueueTransformationForm_create() - - return render_to_response('generic_form.html', { - 'form': form, - 'queue': document_queue, - 'object_name': _(u'document queue'), - 'navigation_object_name': 'queue', - 'title': _(u'Create new transformation for queue: %s') % document_queue, - }, context_instance=RequestContext(request))