42 lines
1.4 KiB
Python
42 lines
1.4 KiB
Python
from django.db import models
|
|
from django.contrib.contenttypes.models import ContentType
|
|
|
|
from ocr.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):
|
|
raise AlreadyQueued
|
|
|
|
document_queue.queuedocument_set.create(document=document, delay=True)
|
|
|
|
return document_queue
|
|
|
|
|
|
class QueueTransformationManager(models.Manager):
|
|
def get_for_object(self, obj):
|
|
ct = ContentType.objects.get_for_model(obj)
|
|
return self.model.objects.filter(content_type=ct).filter(object_id=obj.pk)
|
|
|
|
def get_for_object_as_list(self, obj):
|
|
warnings = []
|
|
transformations = []
|
|
for transformation in self.get_for_object(obj).values('transformation', 'arguments'):
|
|
try:
|
|
transformations.append(
|
|
{
|
|
'transformation': transformation['transformation'],
|
|
'arguments': eval(transformation['arguments'], {})
|
|
}
|
|
)
|
|
except Exception, e:
|
|
warnings.append(e)
|
|
|
|
return transformations, warnings
|