Pass view queryset to acknowledge serializer

This commit is contained in:
shamoon
2026-06-05 22:42:45 -07:00
parent bbc782f455
commit 8715ddccb9
2 changed files with 9 additions and 4 deletions
+2 -1
View File
@@ -2649,7 +2649,8 @@ class AcknowledgeTasksViewSerializer(serializers.Serializer[dict[str, Any]]):
raise serializers.ValidationError(f"{name} must be a list")
if not all(isinstance(i, int) for i in tasks):
raise serializers.ValidationError(f"{name} must be a list of integers")
count = PaperlessTask.objects.filter(id__in=tasks).count()
queryset = self.context.get("queryset", PaperlessTask.objects.all())
count = queryset.filter(id__in=tasks).count()
if not count == len(tasks):
raise serializers.ValidationError(
f"Some tasks in {name} don't exist or were specified twice.",
+7 -3
View File
@@ -4170,13 +4170,17 @@ class TasksViewSet(ReadOnlyModelViewSet[PaperlessTask]):
permission_classes=[IsAuthenticated, AcknowledgeTasksPermissions],
)
def acknowledge(self, request):
serializer = AcknowledgeTasksViewSerializer(data=request.data)
queryset = self.get_queryset()
serializer = AcknowledgeTasksViewSerializer(
data=request.data,
context={"queryset": queryset},
)
serializer.is_valid(raise_exception=True)
if serializer.validated_data.get("all", False):
tasks = self.get_queryset().filter(acknowledged=False)
tasks = queryset.filter(acknowledged=False)
else:
task_ids = serializer.validated_data.get("tasks")
tasks = self.get_queryset().filter(id__in=task_ids)
tasks = queryset.filter(id__in=task_ids)
count = tasks.update(acknowledged=True)
return Response({"result": count})