From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Mon, 15 Jan 2024 22:06:59 +0000 (-0800) Subject: Fix shared by me filter with multiple users / groups in postgres (#5396) X-Git-Tag: v2.4.0~20 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=783090c2cd5311b779e6b61fa1d2a328323b57f5;p=thirdparty%2Fpaperless-ngx.git Fix shared by me filter with multiple users / groups in postgres (#5396) --- diff --git a/src/documents/filters.py b/src/documents/filters.py index bab20a4dc0..b760b97795 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(