Added OCR view displaying all active OCR tasks from all cluster nodes
This commit is contained in:
@@ -35,6 +35,9 @@ document_queue_enable = {'text': _(u'activate queue'), 'view': 'document_queue_e
|
||||
|
||||
all_document_ocr_cleanup = {'text': _(u'clean up pages content'), 'view': 'all_document_ocr_cleanup', 'famfam': 'text_strikethrough', 'permissions': {'namespace': 'ocr', 'permissions': [PERMISSION_OCR_CLEAN_ALL_PAGES]}}
|
||||
|
||||
queue_document_list = {'text': _(u'queue document list'), 'view': 'queue_document_list', 'famfam': 'hourglass', 'permissions': {'namespace': 'ocr', 'permissions': [PERMISSION_OCR_DOCUMENT]}}
|
||||
node_active_list = {'text': _(u'active tasks'), 'view': 'node_active_list', 'famfam': 'server_chart', 'permissions': {'namespace': 'ocr', 'permissions': [PERMISSION_OCR_DOCUMENT]}}
|
||||
|
||||
register_links(Document, [submit_document])
|
||||
register_links(DocumentQueue, [document_queue_disable, document_queue_enable])
|
||||
|
||||
@@ -43,7 +46,7 @@ register_multi_item_links(['queue_document_list'], [re_queue_multiple_document,
|
||||
#Menus
|
||||
register_menu([
|
||||
{'text': _('OCR'), 'view': 'queue_document_list', 'links':[
|
||||
#ocr_queue
|
||||
queue_document_list, node_active_list
|
||||
], 'famfam': 'hourglass', 'position': 4}])
|
||||
|
||||
|
||||
|
||||
@@ -12,4 +12,5 @@ urlpatterns = patterns('ocr.views',
|
||||
url(r'^ocr/queue/(?P<document_queue_id>\d+)/disable/$', 'document_queue_disable', (), 'document_queue_disable'),
|
||||
|
||||
url(r'^ocr/document/all/clean_up/$', 'all_document_ocr_cleanup', (), 'all_document_ocr_cleanup'),
|
||||
url(r'^ocr/node/active/list/$', 'node_active_list', (), 'node_active_list'),
|
||||
)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import datetime
|
||||
import socket
|
||||
|
||||
from django.http import HttpResponseRedirect
|
||||
from django.shortcuts import render_to_response, get_object_or_404
|
||||
@@ -8,6 +9,7 @@ from django.views.generic.list_detail import object_list
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.utils.translation import ugettext as _
|
||||
|
||||
from celery.task.control import inspect
|
||||
from permissions.api import check_permissions
|
||||
from documents.models import Document
|
||||
|
||||
@@ -263,3 +265,51 @@ def all_document_ocr_cleanup(request):
|
||||
messages.error(request, _(u'Document pages content clean up error: %s') % e)
|
||||
|
||||
return HttpResponseRedirect(next)
|
||||
|
||||
|
||||
def display_link(obj):
|
||||
output = []
|
||||
if hasattr(obj, 'get_absolute_url'):
|
||||
output.append(u'<a href="%(url)s">%(obj)s</a>'% {
|
||||
'url': obj.get_absolute_url(),
|
||||
'obj': obj
|
||||
})
|
||||
if output:
|
||||
return u''.join(output)
|
||||
else:
|
||||
return obj
|
||||
|
||||
|
||||
def node_active_list(request):
|
||||
check_permissions(request.user, 'ocr', [PERMISSION_OCR_DOCUMENT])
|
||||
|
||||
i = inspect()
|
||||
active_tasks = []
|
||||
try:
|
||||
active_nodes = i.active()
|
||||
for node, tasks in active_nodes.items():
|
||||
for task in tasks:
|
||||
task_info = {
|
||||
'node': node,
|
||||
'task_name': task['name'],
|
||||
'task_id': task['id'],
|
||||
'related_object': None,
|
||||
}
|
||||
if task['name'] == u'ocr.tasks.task_process_queue_document':
|
||||
task_info['related_object'] = QueueDocument.objects.get(pk=eval(task['args'])[0]).document
|
||||
active_tasks.append(task_info)
|
||||
except socket.error:
|
||||
active_tasks = []
|
||||
|
||||
return render_to_response('generic_list.html', {
|
||||
'object_list': active_tasks,
|
||||
'title': _(u'active tasks'),
|
||||
'hide_links': True,
|
||||
'hide_object': True,
|
||||
'extra_columns': [
|
||||
{'name': _(u'node'), 'attribute': 'node'},
|
||||
{'name': _(u'task id'), 'attribute': 'task_id'},
|
||||
{'name': _(u'task name'), 'attribute': 'task_name'},
|
||||
{'name': _(u'related object'), 'attribute': lambda x: display_link(x['related_object']) if x['related_object'] else u''}
|
||||
],
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
Reference in New Issue
Block a user