Fixes some bugs in filters.py

This commit is contained in:
2023-08-25 05:25:50 +03:00
parent c746d0a7b5
commit fef71feffa

View File

@@ -217,16 +217,12 @@ class FacetFilter(BaseFilterBackend):
def assign_view_facets(self, request, view):
if not hasattr(view, 'facets'):
if view.category:
kwquery_1 = {}
kwquery_1['category__id'] = view.category.id
if view.category.tn_descendants_pks:
kwquery_2 = {}
kwquery_2['category__id__in'] = view.category.tn_descendants_pks.split(',')
view.facets = Facet.objects.filter(Q(**kwquery_1) | Q(**kwquery_2))
if view.category.tn_ancestors_pks:
view.facets = Facet.objects.filter(Q(category__id=view.category.id) | Q(category__id__in=view.category.tn_ancestors_pks.split(','))).prefetch_related('facet_tags')
else:
view.facets = Facet.objects.filter(**kwquery_1)
view.facets = Facet.objects.filter(category__id=view.category.id).prefetch_related('facet_tags')
else:
view.facets = {}
view.facets = Facet.objects.filter(category__tn_level=1).prefetch_related('facet_tags')
def get_filters_dict(self, request, view):
"""
@@ -247,7 +243,7 @@ class FacetFilter(BaseFilterBackend):
if facet.slug in request.query_params.keys():
filters_dict[facet.slug] = set(request.query_params[facet.slug].split(','))
else:
filters_dict[facet.slug] = []
filters_dict[facet.slug] = set({})
# Append the facets object and the tags dict in the view for later reference
view.tags = filters_dict
@@ -276,6 +272,10 @@ class FacetFilter(BaseFilterBackend):
for facet in view.facets:
if facet.slug in request.query_params.keys() and request.query_params[facet.slug]:
tag_filterlist = request.query_params.get(facet.slug)
if tag_filterlist == '':
# If the tag filterlist is empty then we're not filtering against it, it's like having all the tags of the facet selected
pass
else:
kwquery = {}
kwquery[self.facet_tag_field+'__slug__in'] = tag_filterlist.replace(' ','').split(',')
queryset = queryset.filter(**kwquery)