From 477a37f0eb42ec74b20525439dc5ab2e73301418 Mon Sep 17 00:00:00 2001 From: Dhaval Gojiya Date: Wed, 25 Jun 2025 18:40:59 +0530 Subject: [PATCH] [FIX] -- admin site queue choices now use user-defined settings instead of hardcoded values. - Fixes issue #278. - Replaces static choices like "default", "low", and "high" with dynamic values from RQ_QUEUES or SCHEDULER_QUEUES. - Keeps the admin UI consistent with project-specific configuration. --- scheduler/admin/task_models.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/scheduler/admin/task_models.py b/scheduler/admin/task_models.py index ffc7d07..d358ca5 100644 --- a/scheduler/admin/task_models.py +++ b/scheduler/admin/task_models.py @@ -5,10 +5,19 @@ from scheduler import tools from scheduler.models import CronTask, TaskArg, TaskKwarg, RepeatableTask, ScheduledTask -from scheduler.settings import SCHEDULER_CONFIG, logger +from scheduler.settings import SCHEDULER_CONFIG, logger, QUEUES from scheduler.tools import get_job_executions +def get_queue_choices(): + """ + Returns a list of all queues as choices. + + Loaded from user-defined settings: `RQ_QUEUES` or `SCHEDULER_QUEUES`. + """ + return [(queue, queue) for queue in QUEUES.keys()] + + class HiddenMixin(object): class Media: js = ['admin/js/jquery.init.js', ] @@ -161,3 +170,10 @@ def enqueue_job_now(self, request, queryset): task.enqueue_to_run() task_names.append(task.name) self.message_user(request, f"The following jobs have been enqueued: {', '.join(task_names)}", ) + + def get_form(self, request, obj=None, change=False, **kwargs): + # Override admin form to dynamically set choices for the 'queue' field + # See issue #278: https://github.com/django-commons/django-tasks-scheduler/issues/278 + queue_field = self.model._meta.get_field('queue') + queue_field.choices = get_queue_choices() # Choices based on user-defined settings + return super().get_form(request, obj=obj, change=change, **kwargs)