enables ordering by created in product search
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user