from __future__ import absolute_import, unicode_literals from django.contrib import messages from django.utils.translation import ugettext_lazy as _ from mayan.apps.common.generics import SingleObjectListView from .classes import CeleryQueue from .permissions import permission_task_view class QueueListView(SingleObjectListView): extra_context = { 'hide_object': True, 'title': _('Background task queues'), } view_permission = permission_task_view def get_source_queryset(self): return CeleryQueue.all() class QueueActiveTaskListView(SingleObjectListView): view_permission = permission_task_view def get_extra_context(self): return { 'hide_object': True, 'object': self.get_object(), 'title': _('Active tasks in queue: %s') % self.get_object() } def get_object(self): return CeleryQueue.get(queue_name=self.kwargs['queue_name']) def get_source_queryset(self): try: return self.get_task_list() except Exception as exception: messages.error( message=_( 'Unable to retrieve task list; %s' ) % exception, request=self.request ) return () def get_task_list(self): return self.get_object().get_active_tasks() class QueueScheduledTaskListView(QueueActiveTaskListView): def get_extra_context(self): return { 'hide_object': True, 'object': self.get_object(), 'title': _('Scheduled tasks in queue: %s') % self.get_object() } def get_task_list(self): return self.get_object().get_scheduled_tasks() class QueueReservedTaskListView(QueueActiveTaskListView): def get_extra_context(self): return { 'hide_object': True, 'object': self.get_object(), 'title': _('Reserved tasks in queue: %s') % self.get_object() } def get_task_list(self): return self.get_object().get_reserved_tasks()