From 78430892d11dd4d8be2b8f178a15387e511fca8d Mon Sep 17 00:00:00 2001 From: stumpylog <797416+stumpylog@users.noreply.github.com> Date: Thu, 16 Apr 2026 10:19:45 -0700 Subject: [PATCH] fix(tasks): use TriggerSource enum values at all apply_async call sites Replace raw strings ("system", "manual") with PaperlessTask.TriggerSource enum values in the three callers that can import models. The settings file remains a raw string (models cannot be imported at settings load time) with a comment pointing to the enum value it must match. Co-Authored-By: Claude Sonnet 4.6 --- src/documents/views.py | 2 +- src/paperless/settings/custom.py | 1 + src/paperless/views.py | 3 ++- src/paperless_ai/indexing.py | 2 +- 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/documents/views.py b/src/documents/views.py index 740eed792..35f58f8d9 100644 --- a/src/documents/views.py +++ b/src/documents/views.py @@ -3951,7 +3951,7 @@ class TasksViewSet(ReadOnlyModelViewSet[PaperlessTask]): task_func, task_kwargs = self._RUNNABLE_TASKS[task_type] async_result = task_func.apply_async( kwargs=task_kwargs, - headers={"trigger_source": "manual"}, + headers={"trigger_source": PaperlessTask.TriggerSource.MANUAL}, ) return Response({"task_id": async_result.id}) except Exception as e: diff --git a/src/paperless/settings/custom.py b/src/paperless/settings/custom.py index c4d2809db..1c66376a4 100644 --- a/src/paperless/settings/custom.py +++ b/src/paperless/settings/custom.py @@ -183,6 +183,7 @@ def parse_beat_schedule() -> dict: "schedule": crontab(minute, hour, day_week, day_month, month), "options": { **task["options"], + # PaperlessTask.TriggerSource.SCHEDULED -- models can't be imported here "headers": {"trigger_source": "scheduled"}, }, } diff --git a/src/paperless/views.py b/src/paperless/views.py index bd97af6f8..4d056ba68 100644 --- a/src/paperless/views.py +++ b/src/paperless/views.py @@ -38,6 +38,7 @@ from rest_framework.response import Response from rest_framework.throttling import ScopedRateThrottle from rest_framework.viewsets import ModelViewSet +from documents.models import PaperlessTask from documents.permissions import PaperlessObjectPermissions from documents.tasks import llmindex_index from paperless.filters import GroupFilterSet @@ -429,7 +430,7 @@ class ApplicationConfigurationViewSet(ModelViewSet[ApplicationConfiguration]): # AI index was just enabled and vector store file does not exist llmindex_index.apply_async( kwargs={"rebuild": True}, - headers={"trigger_source": "system"}, + headers={"trigger_source": PaperlessTask.TriggerSource.SYSTEM}, ) diff --git a/src/paperless_ai/indexing.py b/src/paperless_ai/indexing.py index 81f2bff3f..b8c865214 100644 --- a/src/paperless_ai/indexing.py +++ b/src/paperless_ai/indexing.py @@ -39,7 +39,7 @@ def queue_llm_index_update_if_needed(*, rebuild: bool, reason: str) -> bool: llmindex_index.apply_async( kwargs={"rebuild": rebuild}, - headers={"trigger_source": "system"}, + headers={"trigger_source": PaperlessTask.TriggerSource.SYSTEM}, ) logger.warning( "Queued LLM index update%s: %s",