Skip to content

🐛 Search does not include root parent #1230

@AntoLC

Description

@AntoLC

Bug Report

When we search documents that has children, it searches on the title field, but only of the descendant document.
The root document does not appear.

Request made:

Request URL: https://docs.numerique.gouv.fr/api/v1.0/documents/[ROOT_ID]/descendants/?page=1&title=de&parent_id=[ROOT_ID] 

def descendants(self, request, *args, **kwargs):
"""Handle listing descendants of a document"""
document = self.get_object()
queryset = document.get_descendants().filter(ancestors_deleted_at__isnull=True)
queryset = self.filter_queryset(queryset)
filterset = DocumentFilter(request.GET, queryset=queryset)
if not filterset.is_valid():
raise drf.exceptions.ValidationError(filterset.errors)
queryset = filterset.qs
return self.get_response_for_queryset(queryset)

Possible solution

Add root document in the descendants requests ?

def descendants(self, request, *args, **kwargs): """Handle listing descendants of a document""" document = self.get_object() # Get descendants - queryset = document.get_descendants().filter(ancestors_deleted_at__isnull=True) + descendants_queryset = document.get_descendants().filter(ancestors_deleted_at__isnull=True) + # Include the parent document itself in the queryset for search + # This allows searching within both the parent and its descendants + parent_queryset = self.queryset.filter(pk=document.pk) + queryset = descendants_queryset | parent_queryset +  queryset = self.filter_queryset(queryset) filterset = DocumentFilter(request.GET, queryset=queryset) if not filterset.is_valid(): raise drf.exceptions.ValidationError(filterset.errors) queryset = filterset.qs return self.get_response_for_queryset(queryset)

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingtriage

Type

No type

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions