mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2026-07-28 06:44:57 +00:00
Fix (beta): don't batch permissions for tantivy search results
UnifiedSearchViewSet.list() returns SearchHit/dict-like objects for text/title/query/more_like_id search requests, not Document ORM instances. Adding BulkPermissionMixin to DocumentViewSet (previous commit) meant its get_serializer_context() ran for search responses too, and its _get_object_perms() -- which expects real model instances with .pk -- crashed on the dict-like hits with AttributeError, turning every search request into a 400. Skip the batching specifically for search requests (existing _is_search_request() check) by calling past BulkPermissionMixin in the MRO; non-search list() calls (which return a real Document queryset) are unaffected and still get the batching. Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
f613082249
commit
f68093fcb8
@@ -2290,6 +2290,15 @@ class UnifiedSearchViewSet(DocumentViewSet):
|
||||
return SearchResultSerializer
|
||||
return DocumentSerializer
|
||||
|
||||
def get_serializer_context(self):
|
||||
if self._is_search_request():
|
||||
# BulkPermissionMixin.get_serializer_context() (inherited via
|
||||
# DocumentViewSet) assumes it's batching permissions for a page of
|
||||
# real Document instances. Tantivy search results are SearchHit/
|
||||
# dict-like objects instead, so skip straight past it here.
|
||||
return super(BulkPermissionMixin, self).get_serializer_context()
|
||||
return super().get_serializer_context()
|
||||
|
||||
def _get_active_search_params(self, request: Request | None = None) -> list[str]:
|
||||
request = request or self.request
|
||||
return [
|
||||
|
||||
Reference in New Issue
Block a user