mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-17 21:18:16 -06:00
14729 background task requeue
This commit is contained in:
parent
f6db395749
commit
7b6a846e33
@ -30,6 +30,7 @@ urlpatterns = (
|
|||||||
path('background-queues/<int:queue_index>/<str:status>/', views.BackgroundTaskListView.as_view(), name='background_task_list'),
|
path('background-queues/<int:queue_index>/<str:status>/', views.BackgroundTaskListView.as_view(), name='background_task_list'),
|
||||||
path('background-tasks/<str:job_id>/', views.BackgroundTaskDetailView.as_view(), name='background_task'),
|
path('background-tasks/<str:job_id>/', views.BackgroundTaskDetailView.as_view(), name='background_task'),
|
||||||
path('background-tasks/<str:job_id>/delete/', views.BackgroundTaskDeleteView.as_view(), name='background_task_delete'),
|
path('background-tasks/<str:job_id>/delete/', views.BackgroundTaskDeleteView.as_view(), name='background_task_delete'),
|
||||||
|
path('background-tasks/<str:job_id>/requeue/', views.BackgroundTaskRequeueView.as_view(), name='background_task_requeue'),
|
||||||
path('background-workers/<int:queue_index>/', views.WorkerListView.as_view(), name='worker_list'),
|
path('background-workers/<int:queue_index>/', views.WorkerListView.as_view(), name='worker_list'),
|
||||||
path('background-worker/<str:key>/', views.WorkerDetailView.as_view(), name='worker'),
|
path('background-worker/<str:key>/', views.WorkerDetailView.as_view(), name='worker'),
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@ from netbox.views import generic
|
|||||||
from netbox.views.generic.base import BaseObjectView
|
from netbox.views.generic.base import BaseObjectView
|
||||||
from netbox.views.generic.mixins import ActionsMixin, TableMixin
|
from netbox.views.generic.mixins import ActionsMixin, TableMixin
|
||||||
|
|
||||||
|
from rq import requeue_job
|
||||||
from rq.exceptions import NoSuchJobError
|
from rq.exceptions import NoSuchJobError
|
||||||
from rq.job import Job as RQ_Job
|
from rq.job import Job as RQ_Job
|
||||||
from rq.registry import (
|
from rq.registry import (
|
||||||
@ -428,7 +429,7 @@ class BackgroundTaskDeleteView(UserPassesTestMixin, View):
|
|||||||
|
|
||||||
def get(self, request, job_id):
|
def get(self, request, job_id):
|
||||||
if not is_htmx(request):
|
if not is_htmx(request):
|
||||||
return redirect('home')
|
return redirect(reverse('core:background_queue_list'))
|
||||||
|
|
||||||
form = ConfirmationForm(initial=request.GET)
|
form = ConfirmationForm(initial=request.GET)
|
||||||
|
|
||||||
@ -463,6 +464,29 @@ class BackgroundTaskDeleteView(UserPassesTestMixin, View):
|
|||||||
return redirect(reverse('core:background_queue_list'))
|
return redirect(reverse('core:background_queue_list'))
|
||||||
|
|
||||||
|
|
||||||
|
class BackgroundTaskRequeueView(UserPassesTestMixin, View):
|
||||||
|
template_name = 'core_background_task_delete.html'
|
||||||
|
|
||||||
|
def test_func(self):
|
||||||
|
return self.request.user.is_staff
|
||||||
|
|
||||||
|
def get(self, request, job_id):
|
||||||
|
# all the RQ queues should use the same connection
|
||||||
|
config = QUEUES_LIST[0]
|
||||||
|
try:
|
||||||
|
job = RQ_Job.fetch(job_id, connection=get_redis_connection(config['connection_config']),)
|
||||||
|
except NoSuchJobError:
|
||||||
|
raise Http404(_("Job {job_id} not found").format(job_id=job_id))
|
||||||
|
|
||||||
|
queue_index = QUEUES_MAP[job.origin]
|
||||||
|
queue = get_queue_by_index(queue_index)
|
||||||
|
|
||||||
|
requeue_job(job_id, connection=queue.connection, serializer=queue.serializer)
|
||||||
|
messages.success(request, f'You have successfully requeued: {job_id}')
|
||||||
|
|
||||||
|
return redirect(reverse('core:background_task', args=[job_id]))
|
||||||
|
|
||||||
|
|
||||||
class WorkerDetailView(UserPassesTestMixin, View):
|
class WorkerDetailView(UserPassesTestMixin, View):
|
||||||
|
|
||||||
def test_func(self):
|
def test_func(self):
|
||||||
|
@ -17,11 +17,7 @@
|
|||||||
<div class="btn-list mb-2">
|
<div class="btn-list mb-2">
|
||||||
{% url 'core:background_task_delete' job_id=job.id as delete_url %}
|
{% url 'core:background_task_delete' job_id=job.id as delete_url %}
|
||||||
{% include "buttons/delete.html" with url=delete_url %}
|
{% include "buttons/delete.html" with url=delete_url %}
|
||||||
<a href="#"
|
<a href="{% url 'core:background_task_requeue' job.id %}"
|
||||||
hx-get="{% url 'extras:dashboardwidget_add' %}"
|
|
||||||
hx-target="#htmx-modal-content"
|
|
||||||
data-bs-toggle="modal"
|
|
||||||
data-bs-target="#htmx-modal"
|
|
||||||
class="btn btn-primary"
|
class="btn btn-primary"
|
||||||
>
|
>
|
||||||
<i class="mdi mdi-sync"></i> {% trans "Requeue" %}
|
<i class="mdi mdi-sync"></i> {% trans "Requeue" %}
|
||||||
|
Loading…
Reference in New Issue
Block a user