Filter on task_params instead of queue

This commit is contained in:
tcely 2025-04-07 00:19:23 -04:00
parent 2613d93924
commit b97de08ffd
No known key found for this signature in database
GPG Key ID: B84DD241AF4C4274
2 changed files with 10 additions and 4 deletions

View File

@ -133,7 +133,7 @@ def get_source_completed_tasks(source_id, only_errors=False):
''' '''
Returns a queryset of CompletedTask objects for a source by source ID. Returns a queryset of CompletedTask objects for a source by source ID.
''' '''
q = {'queue': source_id} q = {'task_params__istartswith': f'[["{source_id}"'}
if only_errors: if only_errors:
q['failed_at__isnull'] = False q['failed_at__isnull'] = False
return CompletedTask.objects.filter(**q).order_by('-failed_at') return CompletedTask.objects.filter(**q).order_by('-failed_at')
@ -167,7 +167,11 @@ def get_source_index_task(source_id):
def delete_task_by_source(task_name, source_id): def delete_task_by_source(task_name, source_id):
now = timezone.now() now = timezone.now()
unlocked = Task.objects.unlocked(now) unlocked = Task.objects.unlocked(now)
return unlocked.filter(task_name=task_name, queue=str(source_id)).delete() qs = unlocked.filter(
task_name=task_name,
task_params__istartswith=f'[["{source_id}"',
)
return qs.delete()
def delete_task_by_media(task_name, args): def delete_task_by_media(task_name, args):

View File

@ -768,7 +768,8 @@ class TasksView(ListView):
def get_queryset(self): def get_queryset(self):
qs = Task.objects.all() qs = Task.objects.all()
if self.filter_source: if self.filter_source:
qs = qs.filter(queue=str(self.filter_source.pk)) params_prefix=f'[["{self.filter_source.pk}"'
qs = qs.filter(task_params__istartswith=params_prefix)
order = getattr(settings, order = getattr(settings,
'BACKGROUND_TASK_PRIORITY_ORDERING', 'BACKGROUND_TASK_PRIORITY_ORDERING',
'DESC' 'DESC'
@ -896,7 +897,8 @@ class CompletedTasksView(ListView):
def get_queryset(self): def get_queryset(self):
qs = CompletedTask.objects.all() qs = CompletedTask.objects.all()
if self.filter_source: if self.filter_source:
qs = qs.filter(queue=str(self.filter_source.pk)) params_prefix=f'[["{self.filter_source.pk}"'
qs = qs.filter(task_params__istartswith=params_prefix)
return qs.order_by('-run_at') return qs.order_by('-run_at')
def get_context_data(self, *args, **kwargs): def get_context_data(self, *args, **kwargs):