mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2026-04-14 03:58:52 +00:00
Compare commits
1 Commits
dev
...
fix/guardi
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
002c5b0a20 |
@@ -884,10 +884,16 @@ class ObjectOwnedOrGrantedPermissionsFilter(ObjectPermissionsFilter):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def filter_queryset(self, request, queryset, view):
|
def filter_queryset(self, request, queryset, view):
|
||||||
|
# django-guardian's get_objects_for_user builds its own queryset
|
||||||
|
# internally and loses prefetch_related declarations. Use its result
|
||||||
|
# as a subquery so we can filter the original queryset (which retains
|
||||||
|
# all prefetch hints) rather than returning guardian's queryset directly.
|
||||||
objects_with_perms = super().filter_queryset(request, queryset, view)
|
objects_with_perms = super().filter_queryset(request, queryset, view)
|
||||||
objects_owned = queryset.filter(owner=request.user)
|
return queryset.filter(
|
||||||
objects_unowned = queryset.filter(owner__isnull=True)
|
Q(pk__in=objects_with_perms)
|
||||||
return objects_with_perms | objects_owned | objects_unowned
|
| Q(owner=request.user)
|
||||||
|
| Q(owner__isnull=True),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class ObjectOwnedPermissionsFilter(ObjectPermissionsFilter):
|
class ObjectOwnedPermissionsFilter(ObjectPermissionsFilter):
|
||||||
|
|||||||
@@ -919,7 +919,7 @@ class DocumentViewSet(
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
"tags",
|
"tags",
|
||||||
"custom_fields",
|
"custom_fields__field",
|
||||||
"notes",
|
"notes",
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user