search function basics
This commit is contained in:
@@ -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))}})
|
||||
|
||||
Reference in New Issue
Block a user