search function basics

This commit is contained in:
Sam
2021-02-03 14:20:55 +00:00
parent ae043b24fc
commit ea8cd97baf
3 changed files with 74 additions and 0 deletions

View File

@@ -100,3 +100,42 @@ def load_coop_products(request):
return Response({"errors": {"details": str(type(e))}})
@api_view(['GET',]) # include allowed methods
def product_search(request):
"""
Takes a string of data, return relevant products
"""
query_string = request.GET.get('query_string', None)
if query_string is None:
return Response({"errors": {"details": "No query string to parse"}})
try:
chunks = query_string.split(' ')
result_set = set()
import ipdb; ipdb.set_trace()
for chunk in chunks:
import ipdb; ipdb.set_trace()
# search in name
products = Product.objects.filter(name__in=chunk)
for item in products:
result_set.add(item)
# search in description
products = Product.objects.filter(description__in=chunk)
for item in products:
result_set.add(item)
# search in tags
products = Product.objects.filter(tags__in=chunk)
for item in products:
result_set.add(item)
# search in category
products = Product.objects.filter(category__in=chunk)
for item in products:
result_set.add(item)
# search in attributes
products = Product.objects.filter(attributes__in=chunk)
for item in products:
result_set.add(item)
return Response(data=result_set)
except Exception as e:
return Response({"errors": {"details": str(type(e))}})