From 783090c2cd5311b779e6b61fa1d2a328323b57f5 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Mon, 15 Jan 2024 14:06:59 -0800 Subject: [PATCH] Fix shared by me filter with multiple users / groups in postgres (#5396) --- src/documents/filters.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/documents/filters.py b/src/documents/filters.py index bab20a4dc..b760b9779 100644 --- a/src/documents/filters.py +++ b/src/documents/filters.py @@ -114,6 +114,8 @@ class SharedByUser(Filter): ctype = ContentType.objects.get_for_model(self.model) UserObjectPermission = get_user_obj_perms_model() GroupObjectPermission = get_group_obj_perms_model() + # see https://github.com/paperless-ngx/paperless-ngx/issues/5392, we limit subqueries + # to 1 because Postgres doesn't like returning > 1 row, but all we care about is > 0 return ( qs.filter( owner_id=value, @@ -123,7 +125,7 @@ class SharedByUser(Filter): UserObjectPermission.objects.filter( content_type=ctype, object_pk=Cast(OuterRef("pk"), CharField()), - ).values("user_id"), + ).values("user_id")[:1], ), ) .annotate( @@ -131,7 +133,7 @@ class SharedByUser(Filter): GroupObjectPermission.objects.filter( content_type=ctype, object_pk=Cast(OuterRef("pk"), CharField()), - ).values("group_id"), + ).values("group_id")[:1], ), ) .filter(