Skip to content

[FIX] -- admin site queue choices now use user-defined settings instead of hardcoded values. #282

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: v1
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 17 additions & 1 deletion scheduler/admin/task_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -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', ]
Expand Down Expand Up @@ -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)