- return render_to_response(
- 'catalogue/search_multiple_hits.html',
- {
- 'pd_authors': pd_authors,
- 'results': results,
- 'did_you_mean': suggestion
- },
- context_instance=RequestContext(request))
+ def ensure_exists(r):
+ try:
+ return r.picture
+ except Picture.DoesNotExist:
+ return False
+
+ results = filter(ensure_exists, results)
+ return results
+
+
+def search_pd_authors(query):
+ pd_authors = Author.objects.filter(name__icontains=query)
+ existing_slugs = Tag.objects.filter(
+ category='author', slug__in=list(pd_authors.values_list('slug', flat=True))) \
+ .values_list('slug', flat=True)
+ pd_authors = pd_authors.exclude(slug__in=existing_slugs)
+ return pd_authors
+
+
+def prepare_query(query):
+ query = ' '.join(query.split())
+ # filter out private use characters
+ import unicodedata
+ query = ''.join(ch for ch in query if unicodedata.category(ch) != 'Co')
+ query = remove_query_syntax_chars(query)
+
+ words = query.split()
+ if len(words) > 10:
+ query = ' '.join(words[:10])
+ return query