search by course-code, and by exact barcode.
authorgfawcett <gfawcett@6d9bc8c9-1ec2-4278-b937-99fde70a366f>
Sat, 16 Apr 2011 18:05:28 +0000 (18:05 +0000)
committergfawcett <gfawcett@6d9bc8c9-1ec2-4278-b937-99fde70a366f>
Sat, 16 Apr 2011 18:05:28 +0000 (18:05 +0000)
git-svn-id: svn://svn.open-ils.org/ILS-Contrib/servres/trunk@1371 6d9bc8c9-1ec2-4278-b937-99fde70a366f

conifer/syrup/views/search.py

index dbcc558..b7753b1 100644 (file)
@@ -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'])