From 39c7b1ed5d3db85049f6523efe0dd5128306b4e7 Mon Sep 17 00:00:00 2001 From: Arthur Date: Fri, 12 Jan 2024 16:18:16 -0800 Subject: [PATCH] 14729 rq table --- netbox/core/tables/__init__.py | 1 + netbox/core/urls.py | 3 +++ netbox/core/views.py | 17 +++++++++++++++++ netbox/netbox/navigation/menu.py | 5 +++++ 4 files changed, 26 insertions(+) diff --git a/netbox/core/tables/__init__.py b/netbox/core/tables/__init__.py index 69f9d8a48..271c1c975 100644 --- a/netbox/core/tables/__init__.py +++ b/netbox/core/tables/__init__.py @@ -1,3 +1,4 @@ from .config import * from .data import * from .jobs import * +from .tasks import * diff --git a/netbox/core/urls.py b/netbox/core/urls.py index 77c0d3194..2347a732b 100644 --- a/netbox/core/urls.py +++ b/netbox/core/urls.py @@ -25,6 +25,9 @@ urlpatterns = ( path('jobs//', views.JobView.as_view(), name='job'), path('jobs//delete/', views.JobDeleteView.as_view(), name='job_delete'), + # Background Tasks + path('tasks/', views.BackgroundTasksView.as_view(), name='background_tasks'), + # Config revisions path('config-revisions/', views.ConfigRevisionListView.as_view(), name='configrevision_list'), path('config-revisions/add/', views.ConfigRevisionEditView.as_view(), name='configrevision_add'), diff --git a/netbox/core/views.py b/netbox/core/views.py index 537c33d9d..f70fbfb3a 100644 --- a/netbox/core/views.py +++ b/netbox/core/views.py @@ -1,6 +1,9 @@ from django.contrib import messages +from django.contrib.auth.mixins import LoginRequiredMixin from django.core.cache import cache from django.http import HttpResponseForbidden +from django_rq.utils import get_scheduler_statistics, get_statistics + from django.shortcuts import get_object_or_404, redirect, render from django.views.generic import View @@ -232,3 +235,17 @@ class ConfigRevisionRestoreView(ContentTypePermissionRequiredMixin, View): messages.success(request, f"Restored configuration revision #{pk}") return redirect(candidate_config.get_absolute_url()) + +# +# Background Tasks (RQ) +# + + +class BackgroundTasksView(LoginRequiredMixin, View): + + def get(self, request): + table = tables.BackgroundTasksTable(get_statistics(run_maintenance_tasks=True)["queues"]) + return render(request, 'core/background_tasks.html', { + 'active_tab': 'api-tokens', + 'table': table, + }) diff --git a/netbox/netbox/navigation/menu.py b/netbox/netbox/navigation/menu.py index d4969386e..3de1b68f9 100644 --- a/netbox/netbox/navigation/menu.py +++ b/netbox/netbox/navigation/menu.py @@ -356,6 +356,11 @@ OPERATIONS_MENU = Menu( link_text=_('Jobs'), permissions=['core.view_job'], ), + MenuItem( + link='core:background_tasks', + link_text=_('Background Tasks'), + permissions=['core.view_job'], + ), ), ), MenuGroup(