Fixes some bugs in filters.py
This commit is contained in:
18
filters.py
18
filters.py
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user