summaryrefslogtreecommitdiffstats
path: root/expo/search.py
diff options
context:
space:
mode:
authorsubstantialnoninfringinguser <substantialnoninfringinguser@gmail.com>2009-07-02 20:43:18 +0100
committersubstantialnoninfringinguser <substantialnoninfringinguser@gmail.com>2009-07-02 20:43:18 +0100
commitae3fe8cd423be5268d630a498361e376c6add776 (patch)
tree1cf7409b5377484ba38d8feba94a893abb7d8611 /expo/search.py
parentc0b274767b5c0ed209b9ff03679519e2d2170134 (diff)
downloadtroggle-ae3fe8cd423be5268d630a498361e376c6add776.tar.gz
troggle-ae3fe8cd423be5268d630a498361e376c6add776.tar.bz2
troggle-ae3fe8cd423be5268d630a498361e376c6add776.zip
[svn] Renaming troggle.expo to troggle.core. To do this, used:
perl -p -i -e "s/expo(?=[\s\.']+)/core/g" `find -name \*.py` and then manually checked each change (had to remove a couple)
Diffstat (limited to 'expo/search.py')
-rw-r--r--expo/search.py39
1 files changed, 0 insertions, 39 deletions
diff --git a/expo/search.py b/expo/search.py
deleted file mode 100644
index 5ec2ce2..0000000
--- a/expo/search.py
+++ /dev/null
@@ -1,39 +0,0 @@
-import re
-
-from django.db.models import Q
-
-# search script from http://www.julienphalip.com/blog/2008/08/16/adding-search-django-site-snap/
-
-def normalize_query(query_string,
- findterms=re.compile(r'"([^"]+)"|(\S+)').findall,
- normspace=re.compile(r'\s{2,}').sub):
- ''' Splits the query string in invidual keywords, getting rid of unecessary spaces
- and grouping quoted words together.
- Example:
-
- >>> normalize_query(' some random words "with quotes " and spaces')
- ['some', 'random', 'words', 'with quotes', 'and', 'spaces']
-
- '''
- return [normspace(' ', (t[0] or t[1]).strip()) for t in findterms(query_string)]
-
-def get_query(query_string, search_fields):
- ''' Returns a query, that is a combination of Q objects. That combination
- aims to search keywords within a model by testing the given search fields.
-
- '''
- query = None # Query to search for every search term
- terms = normalize_query(query_string)
- for term in terms:
- or_query = None # Query to search for a given term in each field
- for field_name in search_fields:
- q = Q(**{"%s__icontains" % field_name: term})
- if or_query is None:
- or_query = q
- else:
- or_query = or_query | q
- if query is None:
- query = or_query
- else:
- query = query & or_query
- return query \ No newline at end of file