From ef0f36bff56dd65120ad7fa6513195845190145b Mon Sep 17 00:00:00 2001 From: Sam Date: Mon, 15 Feb 2021 10:28:29 +0000 Subject: [PATCH] added initial support for nested tags in product search --- products/tests.py | 2 +- products/views.py | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/products/tests.py b/products/tests.py index 46497f3..1fec611 100644 --- a/products/tests.py +++ b/products/tests.py @@ -462,7 +462,7 @@ class ProductSearchTest(TestCase): def test_anon_user_can_search(self): expected_instances = [ self.factory(description="zapatos verdes"), - self.factory(tags="rojos"), + self.factory(tags="colores/rojos"), ] unexpected_instances = [ self.factory(description="chanclas"), diff --git a/products/views.py b/products/views.py index 45d765a..6ed03d3 100644 --- a/products/views.py +++ b/products/views.py @@ -161,7 +161,8 @@ def product_search(request): result_set.add(item) # search in tags - products = Product.objects.filter(tags=chunk) + tags = Product.tags.tag_model.objects.filter(name__icontains=chunk) + products = Product.objects.filter(tags__in=tags) for item in products: result_set.add(item) # search in category @@ -169,13 +170,16 @@ def product_search(request): for item in products: result_set.add(item) # search in attributes - products = Product.objects.filter(attributes=chunk) + attributes = Product.attributes.tag_model.objects.filter(name__icontains=chunk) + products = Product.objects.filter(attributes__in=attributes) for item in products: result_set.add(item) # extract filters from result_set filters = extract_search_filters(result_set) + # filters = {} # serialize and respond product_serializer = ProductSerializer(result_set, many=True) return Response(data={"filters": filters, "products": product_serializer.data}) except Exception as e: + import ipdb; ipdb.set_trace() return Response({"errors": {"details": str(type(e))}}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)