diff options
author | substantialnoninfringinguser <substantialnoninfringinguser@gmail.com> | 2009-07-02 20:43:18 +0100 |
---|---|---|
committer | substantialnoninfringinguser <substantialnoninfringinguser@gmail.com> | 2009-07-02 20:43:18 +0100 |
commit | ae3fe8cd423be5268d630a498361e376c6add776 (patch) | |
tree | 1cf7409b5377484ba38d8feba94a893abb7d8611 /expo/search.py | |
parent | c0b274767b5c0ed209b9ff03679519e2d2170134 (diff) | |
download | troggle-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.py | 39 |
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 |