From 8446047ab246b186f0404a1f8acbf719a6355a78 Mon Sep 17 00:00:00 2001 From: substantialnoninfringinguser Date: Fri, 3 Jul 2009 05:31:49 +0100 Subject: [svn] Brief code cleanup. --- core/search.py | 39 --------------------------------------- 1 file changed, 39 deletions(-) delete mode 100644 core/search.py (limited to 'core/search.py') diff --git a/core/search.py b/core/search.py deleted file mode 100644 index 5ec2ce2..0000000 --- a/core/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 -- cgit v1.2.3