From 04665f48f09f21d49bddf01e70307d8f18153e0f Mon Sep 17 00:00:00 2001 From: gfawcett Date: Sat, 16 Apr 2011 18:05:28 +0000 Subject: [PATCH] search by course-code, and by exact barcode. git-svn-id: svn://svn.open-ils.org/ILS-Contrib/servres/trunk@1371 6d9bc8c9-1ec2-4278-b937-99fde70a366f --- conifer/syrup/views/search.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/conifer/syrup/views/search.py b/conifer/syrup/views/search.py index dbcc558..b7753b1 100644 --- a/conifer/syrup/views/search.py +++ b/conifer/syrup/views/search.py @@ -53,7 +53,11 @@ def build_query(query_string, search_fields): """ def clause(field_name, expression): - return Q(**{"%s__icontains" % field_name: expression}) + if field_name.startswith('EXACT:'): + field_name = field_name[6:] + return Q(**{"%s__iexact" % field_name: expression}) + else: + return Q(**{"%s__icontains" % field_name: expression}) terms = normalize_query(query_string) @@ -83,7 +87,8 @@ def _search(query_string, for_site=None, for_owner=None, user=None): # them all up. term_filter = build_query(query_string, ['title', 'author', - 'publisher', 'marcxml']) + 'publisher', 'marcxml', + 'EXACT:barcode']) if ENABLE_USER_FILTERS and user: user_filter = models.Item.filter_for_user(user) else: @@ -104,7 +109,8 @@ def _search(query_string, for_site=None, for_owner=None, user=None): # any sites as results. sites = models.Site.objects.none() else: - term_filter = build_query(query_string, ['course__name', + term_filter = build_query(query_string, ['course__code', + 'course__name', 'course__department__name', 'owner__last_name', 'owner__first_name']) -- 2.11.0