In base.html I opted to use satchmo_category_search_form rather than
satchmo_search_form to allow users to search on a per category basis.
I noticed a bug which is that if you select a category other than all
products and click search with an empty search box you get an error
rather than no results. So I dove into the code (search.py) and fixed
it by adding a check that if keywords is empty it should immediately
return with results as none. I also made it so that quoted strings
are preserved in search terms i.e. putting:
just a "test string"
in the search box would produce the following search keywords:
['test string', 'just', 'a']
rather than
['just', 'a', '"test', 'string"']
Allowing for searching for exact phrases.
I realize that it reorders the terms but I don't think this matters.
Anyways here is what I changed. In search_view (satchmo_store/shop/
views/search.py) I replaced:
keywords = data.get('keywords', '').split(' ')
category = data.get('category', None)
keywords = filter(None, keywords)
results = {}
with:
keywords = " ".join(data.get('keywords', '').split()).split('"')
if keywords == ['']: #thats two single quotes, not a
double quote
category = data.get('category', None)
context = RequestContext(request, {
'results': None,
'category' : category,
'keywords' : keywords})
return render_to_response(template, context_instance=context)
keywords = ["" + t.strip(punctuation)
for t in keywords[1::2] + "".join(keywords[::2]).split()]
category = data.get('category', None)
keywords = filter(None, keywords)
results = {}
The code that allows for quoted strings is based on the same thing in
mezzanine, a django cms.
Feel free to include this in satchmo, or improve upon it or whatever.
Another option would be to use shlex.split() rather than just split
but apparently it doesn't play nice with unicode characters so I
figured it wasn't the best option.
Josh
--
You received this message because you are subscribed to the Google Groups
"Satchmo users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/satchmo-users?hl=en.