solve conflicts with categories

This commit is contained in:
Diego Calvo
2021-03-19 14:11:56 +01:00
3 changed files with 25 additions and 2 deletions

View File

@@ -793,7 +793,7 @@ class ProductSearchTest(TestCase):
] ]
q = quote("zapatos rojos") q = quote("zapatos rojos")
url = f"{self.endpoint}?q={q}&category=ropa&category=nueva" url = f"{self.endpoint}?q={q}&category[]=ropa&category[]=nueva"
# send in request # send in request
response = self.client.get(url) response = self.client.get(url)
# check response # check response

View File

@@ -10,7 +10,7 @@ from django.utils import timezone
import requests import requests
from products.models import Product from products.models import Product, CategoryTag
from companies.models import Company from companies.models import Company
from history.models import HistorySync from history.models import HistorySync
from PIL import Image from PIL import Image
@@ -144,11 +144,23 @@ def ranked_product_search(keyword, shipping_cost=None, discount=None, categories
# filter by category # filter by category
if categories is not None: if categories is not None:
<<<<<<< HEAD
query = Q() query = Q()
for entry in categories: for entry in categories:
query = query | Q(category__name__contains=entry) query = query | Q(category__name__contains=entry)
products_qs = products_qs.filter(query) products_qs = products_qs.filter(query)
# products_qs = products_qs.filter(category__name__in=categories) # products_qs = products_qs.filter(category__name__in=categories)
=======
# products_qs = products_qs.filter(category__name__in=categories)
descendants = []
for entry in categories:
cat = CategoryTag.objects.filter(label__iexact=entry).first()
# append category tag, and children
descendants.append(cat)
descendants.extend(cat.children.all())
products_qs = products_qs.filter(category__in=descendants)
>>>>>>> development
# filter by tags # filter by tags
if tags is not None: if tags is not None:

View File

@@ -183,11 +183,22 @@ def product_search(request):
products_qs = Product.objects.filter(active=True) products_qs = Product.objects.filter(active=True)
# filter by category # filter by category
if categories is not None: if categories is not None:
<<<<<<< HEAD
query = Q() query = Q()
for entry in categories: for entry in categories:
query = query | Q(category__name__contains=entry) query = query | Q(category__name__contains=entry)
products_qs = products_qs.filter(query) products_qs = products_qs.filter(query)
=======
descendants = []
for entry in categories:
cat = CategoryTag.objects.filter(label__iexact=entry).first()
# append category tag, and children
descendants.append(cat)
descendants.extend(cat.children.all())
products_qs = products_qs.filter(category__in=descendants)
>>>>>>> development
# filter by tags # filter by tags
if tags is not None: if tags is not None:
products_qs = products_qs.filter(tags__name__icontains=tags) products_qs = products_qs.filter(tags__name__icontains=tags)