diff --git a/products/tests.py b/products/tests.py index e9944bf..13471ec 100644 --- a/products/tests.py +++ b/products/tests.py @@ -793,7 +793,7 @@ class ProductSearchTest(TestCase): ] q = quote("zapatos rojos") - url = f"{self.endpoint}?q={q}&category=ropa&category=nueva" + url = f"{self.endpoint}?q={q}&category[]=ropa&category[]=nueva" # send in request response = self.client.get(url) # check response diff --git a/products/utils.py b/products/utils.py index 9b0d7d2..d001a05 100644 --- a/products/utils.py +++ b/products/utils.py @@ -10,7 +10,7 @@ from django.utils import timezone import requests -from products.models import Product +from products.models import Product, CategoryTag from companies.models import Company from history.models import HistorySync from PIL import Image @@ -144,11 +144,23 @@ def ranked_product_search(keyword, shipping_cost=None, discount=None, categories # filter by category if categories is not None: +<<<<<<< HEAD query = Q() for entry in categories: query = query | Q(category__name__contains=entry) products_qs = products_qs.filter(query) # products_qs = products_qs.filter(category__name__in=categories) +======= + # products_qs = products_qs.filter(category__name__in=categories) + descendants = [] + for entry in categories: + cat = CategoryTag.objects.filter(label__iexact=entry).first() + # append category tag, and children + descendants.append(cat) + descendants.extend(cat.children.all()) + + products_qs = products_qs.filter(category__in=descendants) +>>>>>>> development # filter by tags if tags is not None: diff --git a/products/views.py b/products/views.py index 682e626..f6f4dbc 100644 --- a/products/views.py +++ b/products/views.py @@ -183,11 +183,22 @@ def product_search(request): products_qs = Product.objects.filter(active=True) # filter by category if categories is not None: +<<<<<<< HEAD query = Q() for entry in categories: query = query | Q(category__name__contains=entry) products_qs = products_qs.filter(query) +======= + descendants = [] + for entry in categories: + cat = CategoryTag.objects.filter(label__iexact=entry).first() + # append category tag, and children + descendants.append(cat) + descendants.extend(cat.children.all()) + + products_qs = products_qs.filter(category__in=descendants) +>>>>>>> development # filter by tags if tags is not None: products_qs = products_qs.filter(tags__name__icontains=tags)