Browse Source

feat(hadis): support category search across all levels and leaf categories

master
Mohsen Taba 6 days ago
parent
commit
ccc13d3f4b
  1. 22
      apps/hadis/views/category.py

22
apps/hadis/views/category.py

@ -475,6 +475,14 @@ class CategoriesView(ListAPIView):
).filter(
Q(active_hadis_count__gt=0) | Q(children_total_count__gt=0) | Q(source_type=HadisCategory.SourceType.QURAN)
)
search_query = (self.request.query_params.get('search') or '').strip()
if search_query:
queryset = queryset.filter(
Q(title__icontains=search_query) |
Q(slug__icontains=search_query) |
Q(description__icontains=search_query)
)
is_root = self.request.query_params.get('is_root', '').lower()
if is_root in ['true', '1']:
queryset = queryset.filter(parent__isnull=True)
@ -504,11 +512,23 @@ class CategoriesBySectView(ListAPIView):
).filter(
Q(active_hadis_count__gt=0) | Q(children_total_count__gt=0) | Q(source_type=HadisCategory.SourceType.QURAN)
)
is_root = self.request.query_params.get('is_root', 'true').lower()
search_query = (self.request.query_params.get('search') or '').strip()
if search_query:
queryset = queryset.filter(
Q(title__icontains=search_query) |
Q(slug__icontains=search_query) |
Q(description__icontains=search_query)
)
is_root_param = self.request.query_params.get('is_root', None)
if is_root_param is not None:
is_root = is_root_param.lower()
if is_root in ['true', '1']:
queryset = queryset.filter(parent__isnull=True)
elif is_root in ['false', '0']:
queryset = queryset.filter(parent__isnull=False)
elif not search_query:
queryset = queryset.filter(parent__isnull=True)
return apply_category_ordering_and_counts(queryset, self.request)

Loading…
Cancel
Save