Remove task inspection from task manager app
Signed-off-by: Roberto Rosario <roberto.rosario@mayan-edms.com>
This commit is contained in:
@@ -59,7 +59,7 @@
|
||||
- Add platform template to return queues for a worker.
|
||||
- Update the EXIFTOOL driver to run for all documents
|
||||
regardless of MIME type.
|
||||
|
||||
- Remove task inspection from task manager app.
|
||||
|
||||
3.2.6 (2019-07-10)
|
||||
==================
|
||||
|
||||
@@ -74,6 +74,7 @@ Changes
|
||||
- Add entrypoint commands to run single workers, single gunicorn
|
||||
or single celery commands like "flower".
|
||||
- Add platform template to return queues for a worker.
|
||||
- Remove task inspection from task manager app.
|
||||
|
||||
|
||||
Removals
|
||||
@@ -186,7 +187,9 @@ Backward incompatible changes
|
||||
Bugs fixed or issues closed
|
||||
---------------------------
|
||||
|
||||
- :gitlab-issue:`526` RuntimeWarning: Never call result.get() within a task!
|
||||
- :gitlab-issue:`532` Workflow preview isn't updated right after transitions are modified
|
||||
- :gitlab-issue:`540` hint-outdated/update documentation
|
||||
- :gitlab-issue:`594` 3.2b1: Unable to install/run under Python 3.5/3.6/3.7
|
||||
- :gitlab-issue:`634` Failing docker entrypoint when using secret config
|
||||
- :gitlab-issue:`635` Build a docker image for Python3
|
||||
|
||||
@@ -8,18 +8,13 @@ from mayan.apps.common.menus import menu_object, menu_secondary, menu_tools
|
||||
from mayan.apps.navigation.classes import SourceColumn
|
||||
|
||||
from .classes import CeleryQueue, Task
|
||||
from .links import (
|
||||
link_queue_list, link_queue_active_task_list,
|
||||
link_queue_scheduled_task_list, link_queue_reserved_task_list,
|
||||
link_task_manager
|
||||
)
|
||||
from .links import link_task_manager
|
||||
from .settings import * # NOQA
|
||||
|
||||
|
||||
class TaskManagerApp(MayanAppConfig):
|
||||
app_namespace = 'task_manager'
|
||||
app_url = 'task_manager'
|
||||
has_tests = True
|
||||
name = 'mayan.apps.task_manager'
|
||||
verbose_name = _('Task manager')
|
||||
|
||||
@@ -65,16 +60,4 @@ class TaskManagerApp(MayanAppConfig):
|
||||
func=lambda context: context['object'].kwargs['worker_pid']
|
||||
)
|
||||
|
||||
menu_object.bind_links(
|
||||
links=(
|
||||
link_queue_active_task_list, link_queue_scheduled_task_list,
|
||||
link_queue_reserved_task_list,
|
||||
), sources=(CeleryQueue,)
|
||||
)
|
||||
|
||||
menu_secondary.bind_links(
|
||||
links=(link_queue_list,),
|
||||
sources=(CeleryQueue, Task, 'task_manager:queue_list')
|
||||
)
|
||||
|
||||
menu_tools.bind_links(links=(link_task_manager,))
|
||||
|
||||
@@ -6,9 +6,6 @@ import logging
|
||||
|
||||
from kombu import Exchange, Queue
|
||||
|
||||
from celery.five import monotonic
|
||||
from celery.task.control import inspect
|
||||
|
||||
from django.apps import apps
|
||||
from django.utils.encoding import force_text, python_2_unicode_compatible
|
||||
from django.utils.module_loading import import_string
|
||||
@@ -62,18 +59,10 @@ class Task(object):
|
||||
def __str__(self):
|
||||
return force_text(self.task_type)
|
||||
|
||||
def get_time_started(self):
|
||||
time_start = self.kwargs.get('time_start')
|
||||
if time_start:
|
||||
return now() - timedelta(seconds=monotonic() - self.kwargs['time_start'])
|
||||
else:
|
||||
return None
|
||||
|
||||
|
||||
@python_2_unicode_compatible
|
||||
class CeleryQueue(object):
|
||||
_registry = {}
|
||||
_inspect_instance = inspect()
|
||||
|
||||
@staticmethod
|
||||
def initialize():
|
||||
@@ -132,21 +121,6 @@ class CeleryQueue(object):
|
||||
self.task_types.append(task_type)
|
||||
return task_type
|
||||
|
||||
def get_active_tasks(self):
|
||||
return self._process_task_dictionary(
|
||||
task_dictionary=self.__class__._inspect_instance.active()
|
||||
)
|
||||
|
||||
def get_reserved_tasks(self):
|
||||
return self._process_task_dictionary(
|
||||
task_dictionary=self.__class__._inspect_instance.reserved()
|
||||
)
|
||||
|
||||
def get_scheduled_tasks(self):
|
||||
return self._process_task_dictionary(
|
||||
task_dictionary=self.__class__._inspect_instance.scheduled()
|
||||
)
|
||||
|
||||
def _update_celery(self):
|
||||
kwargs = {
|
||||
'name': self.name, 'exchange': Exchange(self.name),
|
||||
|
||||
@@ -11,19 +11,3 @@ link_task_manager = Link(
|
||||
icon_class=icon_task_manager, permissions=(permission_task_view,),
|
||||
text=_('Task manager'), view='task_manager:queue_list'
|
||||
)
|
||||
link_queue_list = Link(
|
||||
icon_class=icon_queue_list, permissions=(permission_task_view,),
|
||||
text=_('Background task queues'), view='task_manager:queue_list'
|
||||
)
|
||||
link_queue_active_task_list = Link(
|
||||
args='resolved_object.name', permissions=(permission_task_view,),
|
||||
text=_('Active tasks'), view='task_manager:queue_active_task_list'
|
||||
)
|
||||
link_queue_reserved_task_list = Link(
|
||||
args='resolved_object.name', permissions=(permission_task_view,),
|
||||
text=_('Reserved tasks'), view='task_manager:queue_reserved_task_list'
|
||||
)
|
||||
link_queue_scheduled_task_list = Link(
|
||||
args='resolved_object.name', permissions=(permission_task_view,),
|
||||
text=_('Scheduled tasks'), view='task_manager:queue_scheduled_task_list'
|
||||
)
|
||||
|
||||
@@ -22,29 +22,11 @@ class TaskManagerViewTestCase(TaskManagerTestMixin, GenericViewTestCase):
|
||||
super(TaskManagerViewTestCase, self).setUp()
|
||||
self._create_test_queue()
|
||||
|
||||
def _request_active_task_list(self):
|
||||
return self.get(
|
||||
viewname='task_manager:queue_active_task_list',
|
||||
kwargs={'queue_name': self.test_queue.name}, follow=True
|
||||
)
|
||||
|
||||
def _request_queue_list(self):
|
||||
return self.get(
|
||||
viewname='task_manager:queue_list', follow=True
|
||||
)
|
||||
|
||||
def _request_reserved_task_list(self):
|
||||
return self.get(
|
||||
viewname='task_manager:queue_reserved_task_list',
|
||||
kwargs={'queue_name': self.test_queue.name}, follow=True
|
||||
)
|
||||
|
||||
def _request_scheduled_task_list(self):
|
||||
return self.get(
|
||||
viewname='task_manager:queue_scheduled_task_list',
|
||||
kwargs={'queue_name': self.test_queue.name}, follow=True
|
||||
)
|
||||
|
||||
def test_queue_list_view_no_permissions(self):
|
||||
response = self._request_queue_list()
|
||||
|
||||
@@ -57,33 +39,3 @@ class TaskManagerViewTestCase(TaskManagerTestMixin, GenericViewTestCase):
|
||||
self.assertContains(
|
||||
response, text=self.test_queue.name, status_code=200
|
||||
)
|
||||
|
||||
def test_active_task_list_view_no_permissions(self):
|
||||
response = self._request_active_task_list()
|
||||
self.assertEqual(response.status_code, 403)
|
||||
|
||||
def test_active_task_list_view_with_permissions(self):
|
||||
self.grant_permission(permission=permission_task_view)
|
||||
|
||||
response = self._request_active_task_list()
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
def test_reserved_task_list_view_no_permissions(self):
|
||||
response = self._request_reserved_task_list()
|
||||
self.assertEqual(response.status_code, 403)
|
||||
|
||||
def test_reserved_task_list_view_with_permissions(self):
|
||||
self.grant_permission(permission=permission_task_view)
|
||||
|
||||
response = self._request_reserved_task_list()
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
def test_scheduled_task_list_view_no_permissions(self):
|
||||
response = self._request_scheduled_task_list()
|
||||
self.assertEqual(response.status_code, 403)
|
||||
|
||||
def test_scheduled_task_list_view_with_permissions(self):
|
||||
self.grant_permission(permission=permission_task_view)
|
||||
|
||||
response = self._request_scheduled_task_list()
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
@@ -2,29 +2,11 @@ from __future__ import unicode_literals
|
||||
|
||||
from django.conf.urls import url
|
||||
|
||||
from .views import (
|
||||
QueueListView, QueueActiveTaskListView, QueueScheduledTaskListView,
|
||||
QueueReservedTaskListView
|
||||
)
|
||||
|
||||
from .views import QueueListView
|
||||
|
||||
urlpatterns = [
|
||||
url(
|
||||
regex=r'^queues/$', view=QueueListView.as_view(),
|
||||
name='queue_list'
|
||||
),
|
||||
url(
|
||||
regex=r'^queues/(?P<queue_name>[-\w]+)/tasks/active/$',
|
||||
view=QueueActiveTaskListView.as_view(), name='queue_active_task_list'
|
||||
),
|
||||
url(
|
||||
regex=r'^queues/(?P<queue_name>[-\w]+)/tasks/scheduled/$',
|
||||
view=QueueScheduledTaskListView.as_view(),
|
||||
name='queue_scheduled_task_list'
|
||||
),
|
||||
url(
|
||||
regex=r'^queues/(?P<queue_name>[-\w]+)/tasks/reserved/$',
|
||||
view=QueueReservedTaskListView.as_view(),
|
||||
name='queue_reserved_task_list'
|
||||
),
|
||||
]
|
||||
|
||||
@@ -18,55 +18,3 @@ class QueueListView(SingleObjectListView):
|
||||
|
||||
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()
|
||||
|
||||
Reference in New Issue
Block a user