Add TaskScheduleView

This commit is contained in:
tcely 2025-05-08 07:55:06 -04:00 committed by GitHub
parent dc38c0a37a
commit 3b17f69346
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -24,7 +24,7 @@ from common.utils import append_uri_params
from background_task.models import Task, CompletedTask from background_task.models import Task, CompletedTask
from .models import Source, Media, MediaServer from .models import Source, Media, MediaServer
from .forms import (ValidateSourceForm, ConfirmDeleteSourceForm, RedownloadMediaForm, from .forms import (ValidateSourceForm, ConfirmDeleteSourceForm, RedownloadMediaForm,
SkipMediaForm, EnableMediaForm, ResetTasksForm, SkipMediaForm, EnableMediaForm, ResetTasksForm, ScheduleTaskForm,
ConfirmDeleteMediaServerForm) ConfirmDeleteMediaServerForm)
from .utils import validate_url, delete_file, multi_key_sort, mkdir_p from .utils import validate_url, delete_file, multi_key_sort, mkdir_p
from .tasks import (map_task_to_instance, get_error_message, from .tasks import (map_task_to_instance, get_error_message,
@ -1004,6 +1004,41 @@ class ResetTasks(FormView):
return append_uri_params(url, {'message': 'reset'}) return append_uri_params(url, {'message': 'reset'})
class TaskScheduleView(FormView, SingleObjectMixin):
'''
Confirm that the task should be re-scheduled.
'''
template_name = 'sync/task-schedule.html'
form_class = ScheduleTaskForm
model = Task
def __init__(self, *args, **kwargs):
self.object = None
self.schedule = 0
super().__init__(*args, **kwargs)
def dispatch(self, request, *args, **kwargs):
self.object = self.get_object()
return super().dispatch(request, *args, **kwargs)
def get_success_url(self):
return append_uri_params(
reverse_lazy('sync:tasks'),
dict(
message='scheduled',
pk=str(self.object.pk),
),
)
def form_valid(self, form):
max_attempts = getattr(settings, 'MAX_ATTEMPTS', 15)
self.object.attempts = max_attempts // 2
self.object.run_at = timezone.now() + timezone.timedelta(seconds=self.schedule)
self.object.save()
return super().form_valid(form)
class MediaServersView(ListView): class MediaServersView(ListView):
''' '''
List of media servers which have been added. List of media servers which have been added.