mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2026-04-13 03:28:51 +00:00
Compare commits
1 Commits
fix/guardi
...
fix/matchi
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3c627b12aa |
@@ -650,6 +650,10 @@ class ConsumerPlugin(
|
||||
# If we get here, it was successful. Proceed with post-consume
|
||||
# hooks. If they fail, nothing will get changed.
|
||||
|
||||
document = Document.objects.prefetch_related("versions").get(
|
||||
pk=document.pk,
|
||||
)
|
||||
|
||||
document_consumption_finished.send(
|
||||
sender=self.__class__,
|
||||
document=document,
|
||||
|
||||
@@ -884,16 +884,10 @@ class ObjectOwnedOrGrantedPermissionsFilter(ObjectPermissionsFilter):
|
||||
"""
|
||||
|
||||
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)
|
||||
return queryset.filter(
|
||||
Q(pk__in=objects_with_perms)
|
||||
| Q(owner=request.user)
|
||||
| Q(owner__isnull=True),
|
||||
)
|
||||
objects_owned = queryset.filter(owner=request.user)
|
||||
objects_unowned = queryset.filter(owner__isnull=True)
|
||||
return objects_with_perms | objects_owned | objects_unowned
|
||||
|
||||
|
||||
class ObjectOwnedPermissionsFilter(ObjectPermissionsFilter):
|
||||
|
||||
@@ -381,7 +381,10 @@ class Document(SoftDeleteModel, ModelWithOwner): # type: ignore[django-manager-
|
||||
if isinstance(prefetched_cache, dict)
|
||||
else None
|
||||
)
|
||||
if prefetched_versions:
|
||||
if prefetched_versions is not None:
|
||||
# Empty list means prefetch ran and found no versions — use own content.
|
||||
if not prefetched_versions:
|
||||
return self.content
|
||||
latest_prefetched = max(prefetched_versions, key=lambda doc: doc.id)
|
||||
return latest_prefetched.content
|
||||
|
||||
|
||||
@@ -919,7 +919,7 @@ class DocumentViewSet(
|
||||
),
|
||||
),
|
||||
"tags",
|
||||
"custom_fields__field",
|
||||
"custom_fields",
|
||||
"notes",
|
||||
)
|
||||
)
|
||||
@@ -1248,7 +1248,10 @@ class DocumentViewSet(
|
||||
),
|
||||
)
|
||||
def suggestions(self, request, pk=None):
|
||||
doc = get_object_or_404(Document.objects.select_related("owner"), pk=pk)
|
||||
doc = get_object_or_404(
|
||||
Document.objects.select_related("owner").prefetch_related("versions"),
|
||||
pk=pk,
|
||||
)
|
||||
if request.user is not None and not has_perms_owner_aware(
|
||||
request.user,
|
||||
"view_document",
|
||||
|
||||
Reference in New Issue
Block a user