mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2026-07-30 07:44:54 +00:00
Fix (beta): short-circuit ObjectOwnedOrGrantedPermissionsFilter for superusers (#13183)
Mirrors the existing short-circuit already present in its sibling class, ObjectOwnedPermissionsFilter, which this one lacked. Benchmarked as a superuser against a 100k-document corpus: no measurable difference. django-guardian's own get_objects_for_user() (called via super().filter_queryset()) already returns the queryset unrestricted for superusers before this change, so the guardian permission tables were never actually queried for superusers either way. This change only skips building a redundant 3-way OR of conditions that are all subsets of the already-unrestricted queryset -- worth keeping for clarity/consistency with the sibling filter, not as a performance claim. Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
d8d8872414
commit
8404198ec8
@@ -1024,6 +1024,8 @@ class ObjectOwnedOrGrantedPermissionsFilter(ObjectPermissionsFilter):
|
||||
"""
|
||||
|
||||
def filter_queryset(self, request, queryset, view):
|
||||
if request.user.is_superuser:
|
||||
return queryset
|
||||
objects_with_perms = super().filter_queryset(request, queryset, view)
|
||||
objects_owned = queryset.filter(owner=request.user)
|
||||
objects_unowned = queryset.filter(owner__isnull=True)
|
||||
|
||||
Reference in New Issue
Block a user