From 904db3b7942aa47f65f1f9884dc27c0e53982740 Mon Sep 17 00:00:00 2001 From: Sam Date: Thu, 4 Feb 2021 10:19:38 +0000 Subject: [PATCH] very basic and unoptimized search functionality is working --- products/tests.py | 5 ++++- products/views.py | 16 ++++++++-------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/products/tests.py b/products/tests.py index 5632b79..db6a479 100644 --- a/products/tests.py +++ b/products/tests.py @@ -356,6 +356,9 @@ class ProductSearchTest(TestCase): self.user.save() def test_anon_user_can_search(self): + self.factory(description="zapatos") + self.factory(tags="rojos") + query_string = quote("zapatos rojos") url = f"{self.endpoint}?query_string={query_string}" @@ -366,7 +369,7 @@ class ProductSearchTest(TestCase): # check re sponse self.assertEqual(response.status_code, 200) # check for object creation - self.assertEquals(5, self.model.objects.count()) + self.assertEquals(2, self.model.objects.count()) class MyProductsViewTest(APITestCase): diff --git a/products/views.py b/products/views.py index bd14d58..e12d9bd 100644 --- a/products/views.py +++ b/products/views.py @@ -121,30 +121,30 @@ def product_search(request): chunks = query_string.split(' ') result_set = set() - import ipdb; ipdb.set_trace() + # import ipdb; ipdb.set_trace() for chunk in chunks: - import ipdb; ipdb.set_trace() # search in name - products = Product.objects.filter(name__in=chunk) + products = Product.objects.filter(name=chunk) for item in products: result_set.add(item) # search in description - products = Product.objects.filter(description__in=chunk) + products = Product.objects.filter(description=chunk) for item in products: result_set.add(item) # search in tags - products = Product.objects.filter(tags__in=chunk) + products = Product.objects.filter(tags=chunk) for item in products: result_set.add(item) # search in category - products = Product.objects.filter(category__in=chunk) + products = Product.objects.filter(category=chunk) for item in products: result_set.add(item) # search in attributes - products = Product.objects.filter(attributes__in=chunk) + products = Product.objects.filter(attributes=chunk) for item in products: result_set.add(item) - return Response(data=result_set) + data = serializers.serialize('json', result_set) + return Response(data=data) except Exception as e: return Response({"errors": {"details": str(type(e))}})