mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-05-01 11:19:32 -05:00
Fix shared by me filter with multiple users / groups in postgres (#5396)
This commit is contained in:
parent
b8e3dc2dd8
commit
f3ff7b046f
@ -114,6 +114,8 @@ class SharedByUser(Filter):
|
|||||||
ctype = ContentType.objects.get_for_model(self.model)
|
ctype = ContentType.objects.get_for_model(self.model)
|
||||||
UserObjectPermission = get_user_obj_perms_model()
|
UserObjectPermission = get_user_obj_perms_model()
|
||||||
GroupObjectPermission = get_group_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 (
|
return (
|
||||||
qs.filter(
|
qs.filter(
|
||||||
owner_id=value,
|
owner_id=value,
|
||||||
@ -123,7 +125,7 @@ class SharedByUser(Filter):
|
|||||||
UserObjectPermission.objects.filter(
|
UserObjectPermission.objects.filter(
|
||||||
content_type=ctype,
|
content_type=ctype,
|
||||||
object_pk=Cast(OuterRef("pk"), CharField()),
|
object_pk=Cast(OuterRef("pk"), CharField()),
|
||||||
).values("user_id"),
|
).values("user_id")[:1],
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
.annotate(
|
.annotate(
|
||||||
@ -131,7 +133,7 @@ class SharedByUser(Filter):
|
|||||||
GroupObjectPermission.objects.filter(
|
GroupObjectPermission.objects.filter(
|
||||||
content_type=ctype,
|
content_type=ctype,
|
||||||
object_pk=Cast(OuterRef("pk"), CharField()),
|
object_pk=Cast(OuterRef("pk"), CharField()),
|
||||||
).values("group_id"),
|
).values("group_id")[:1],
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
.filter(
|
.filter(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user