improvemnets to filters provided by product search results

This commit is contained in:
Sam
2021-02-15 11:59:24 +00:00
parent c38e9dd822
commit 10ac56c5e9
2 changed files with 50 additions and 7 deletions

View File

@@ -471,8 +471,6 @@ class ProductSearchTest(TestCase):
self.factory(tags="azules"),
]
self.factory(tags="azul")
query_string = quote("zapatos rojos")
url = f"{self.endpoint}?query_string={query_string}"
@@ -483,6 +481,8 @@ class ProductSearchTest(TestCase):
self.assertEqual(response.status_code, 200)
# check for object creation
self.assertEquals(len(payload['products']), len(expected_instances))
# check for filters
self.assertNotEquals([], payload['filters']['singles'])
class MyProductsViewTest(APITestCase):

View File

@@ -1,9 +1,52 @@
import logging
def extract_search_filters(result_set):
filters = set()
"""
Returned object should look something like:
{
"singles": [], # non tree tags
"entry_1": [ 'tag1', 'tag2' ],
"entry_2": [ 'tag1', 'tag2' ],
}
"""
filter_dict = {
'singles': set(),
}
for item in result_set:
# import ipdb; ipdb.set_trace()
try:
# extract tags
tags = item.tags.all()
for tag in tags:
filters.add(tag.name)
return list(filters)
if len(tag.name.split('/')) == 1:
filter_dict['singles'].add(tag.name)
else:
# set penultimate tag as header
chunks = tag.name.split('/')
header = chunks[-2]
name = chunks[-1]
# check if
entry = filter_dict.get(header)
if entry is None:
filter_dict[header] = set()
filter_dict[header].add(name)
# extract attributes
attributes = item.attributes.all()
for tag in attributes:
if len(tag.name.split('/')) == 1:
filter_dict['singles'].add(tag.name)
else:
# set penultimate tag as header
chunks = tag.name.split('/')
header = chunks[-2]
name = chunks[-1]
# check if
entry = filter_dict.get(header)
if entry is None:
filter_dict[header] = set()
filter_dict[header].add(name)
except Exception as e:
logging.error(f'Extacting filters for {item}')
return filter_dict