enables ordering by created in product search

This commit is contained in:
Sam
2021-02-25 12:29:40 +00:00
parent ccfe5bff6b
commit 38ec6b343a
3 changed files with 78 additions and 31 deletions

View File

@@ -156,6 +156,7 @@ def product_search(request):
- discount: true/false
- category: string
- tags: string
- order: string (newest/oldest)
"""
# capture query params
q = request.GET.get('q', None)
@@ -181,6 +182,7 @@ def product_search(request):
tags = request.GET.get('tags', None)
price_min = request.GET.get('price_min', None)
price_max = request.GET.get('price_max', None)
order = request.GET.get('order', '')
if q is None:
return Response({"errors": {"details": "No query string to parse"}})
@@ -204,10 +206,19 @@ def product_search(request):
# extract filters from result_set
filters = extract_search_filters(result_set)
# order results by RANK
result_list = list(result_set)
ranked_products = sorted(result_list, key= lambda rank:rank.rank, reverse=True)
serializer = SearchResultSerializer(ranked_products, many=True)
if order == 'newest':
# order results by created
ordered_products = sorted(result_list, key= lambda x:x.created, reverse=True)
elif order == 'oldest':
# order results by created
ordered_products = sorted(result_list, key= lambda x:x.created, reverse=False)
else:
# order results by RANK
ordered_products = sorted(result_list, key= lambda rank:rank.rank, reverse=True)
serializer = SearchResultSerializer(ordered_products, many=True)
product_results = [dict(i) for i in serializer.data]
total_results = len(product_results)