Migrated same solution to ocr queue transformation too

This commit is contained in:
Roberto Rosario
2011-07-25 02:59:39 -04:00
parent a7204ee38f
commit 1321491c1f
2 changed files with 37 additions and 27 deletions
+25 -1
View File
@@ -1,9 +1,12 @@
from ast import literal_eval
from django.db import models from django.db import models
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.core.exceptions import ObjectDoesNotExist from django.core.exceptions import ObjectDoesNotExist
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes import generic from django.contrib.contenttypes import generic
from django.core.exceptions import ValidationError
from documents.models import Document from documents.models import Document
from converter.api import get_available_transformations_choices from converter.api import get_available_transformations_choices
@@ -59,6 +62,27 @@ class QueueDocument(models.Model):
return ugettext(u'Missing document.') 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): class QueueTransformation(models.Model):
""" """
Model that stores the transformation and transformation arguments Model that stores the transformation and transformation arguments
@@ -69,7 +93,7 @@ class QueueTransformation(models.Model):
content_object = generic.GenericForeignKey('content_type', 'object_id') content_object = generic.GenericForeignKey('content_type', 'object_id')
order = models.PositiveIntegerField(default=0, blank=True, null=True, verbose_name=_(u'order'), db_index=True) 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')) 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}') 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 = QueueTransformationManager() objects = QueueTransformationManager()
+12 -26
View File
@@ -332,8 +332,6 @@ def setup_queue_transformation_list(request, document_queue_id):
context = { context = {
'object_list': QueueTransformation.objects.get_for_object(document_queue), 'object_list': QueueTransformation.objects.get_for_object(document_queue),
'title': _(u'transformations for: %s') % document_queue, 'title': _(u'transformations for: %s') % document_queue,
#'object_name': _(u'document queue'),
#'object': document_queue,
'queue': document_queue, 'queue': document_queue,
'object_name': _(u'document queue'), 'object_name': _(u'document queue'),
'navigation_object_name': 'queue', 'navigation_object_name': 'queue',
@@ -362,17 +360,11 @@ def setup_queue_transformation_edit(request, transformation_id):
form = QueueTransformationForm(instance=transformation, data=request.POST) form = QueueTransformationForm(instance=transformation, data=request.POST)
if form.is_valid(): if form.is_valid():
try: try:
# Test the validity of the argument field form.save()
eval(form.cleaned_data['arguments'], {}) messages.success(request, _(u'Queue transformation edited successfully'))
except: return HttpResponseRedirect(next)
messages.error(request, _(u'Queue transformation argument error.')) except Exception, e:
else: messages.error(request, _(u'Error editing queue transformation; %s') % e)
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: else:
form = QueueTransformationForm(instance=transformation) form = QueueTransformationForm(instance=transformation)
@@ -435,19 +427,13 @@ def setup_queue_transformation_create(request, document_queue_id):
form = QueueTransformationForm_create(request.POST) form = QueueTransformationForm_create(request.POST)
if form.is_valid(): if form.is_valid():
try: try:
# Test the validity of the argument field queue_tranformation = form.save(commit=False)
eval(form.cleaned_data['arguments'], {}) queue_tranformation.content_object = document_queue
except: queue_tranformation.save()
messages.error(request, _(u'Queue transformation argument error.')) messages.success(request, _(u'Queue transformation created successfully'))
else: return HttpResponseRedirect(redirect_view)
try: except Exception, e:
queue_tranformation = form.save(commit=False) messages.error(request, _(u'Error creating queue transformation; %s') % e)
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: else:
form = QueueTransformationForm_create() form = QueueTransformationForm_create()