diff --git a/HISTORY.rst b/HISTORY.rst index 585c2040bf..9f60710187 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -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) ================== diff --git a/docs/releases/3.3.rst b/docs/releases/3.3.rst index bcb2c46306..09d17e0429 100644 --- a/docs/releases/3.3.rst +++ b/docs/releases/3.3.rst @@ -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 diff --git a/mayan/apps/task_manager/apps.py b/mayan/apps/task_manager/apps.py index 781632b927..ce70a3597e 100644 --- a/mayan/apps/task_manager/apps.py +++ b/mayan/apps/task_manager/apps.py @@ -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,)) diff --git a/mayan/apps/task_manager/classes.py b/mayan/apps/task_manager/classes.py index 2fd398b125..d37df2c049 100644 --- a/mayan/apps/task_manager/classes.py +++ b/mayan/apps/task_manager/classes.py @@ -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), diff --git a/mayan/apps/task_manager/links.py b/mayan/apps/task_manager/links.py index 767008ab59..c7e4a8d465 100644 --- a/mayan/apps/task_manager/links.py +++ b/mayan/apps/task_manager/links.py @@ -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' -) diff --git a/mayan/apps/task_manager/tests/test_views.py b/mayan/apps/task_manager/tests/test_views.py index c672c48dd6..4df67fa61c 100644 --- a/mayan/apps/task_manager/tests/test_views.py +++ b/mayan/apps/task_manager/tests/test_views.py @@ -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) diff --git a/mayan/apps/task_manager/urls.py b/mayan/apps/task_manager/urls.py index de48bf12ff..622a46fea4 100644 --- a/mayan/apps/task_manager/urls.py +++ b/mayan/apps/task_manager/urls.py @@ -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[-\w]+)/tasks/active/$', - view=QueueActiveTaskListView.as_view(), name='queue_active_task_list' - ), - url( - regex=r'^queues/(?P[-\w]+)/tasks/scheduled/$', - view=QueueScheduledTaskListView.as_view(), - name='queue_scheduled_task_list' - ), - url( - regex=r'^queues/(?P[-\w]+)/tasks/reserved/$', - view=QueueReservedTaskListView.as_view(), - name='queue_reserved_task_list' - ), ] diff --git a/mayan/apps/task_manager/views.py b/mayan/apps/task_manager/views.py index ab229a0c87..0cf63278ef 100644 --- a/mayan/apps/task_manager/views.py +++ b/mayan/apps/task_manager/views.py @@ -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()