git-svn-id: svn://svn.open-ils.org/ILS-Contrib/servres/trunk@68 6d9bc8c9-1ec2-4278...
authorartunit <artunit@6d9bc8c9-1ec2-4278-b937-99fde70a366f>
Mon, 1 Dec 2008 19:01:20 +0000 (19:01 +0000)
committerartunit <artunit@6d9bc8c9-1ec2-4278-b937-99fde70a366f>
Mon, 1 Dec 2008 19:01:20 +0000 (19:01 +0000)
conifer/syrup/models.py
conifer/syrup/views.py

index 4988a21..6361139 100644 (file)
@@ -2,6 +2,24 @@ from django.db import models as m
 from django.contrib.auth.models import User
 from django.contrib.auth.models import AnonymousUser
 from datetime import datetime
+import re
+
+def highlight(text, phrase,
+              highlighter='<strong class="highlight">\\1</strong>'):
+    ''' This may be a lame way to do this, but will want to highlight matches somehow
+
+        >>> highlight('The River is Wide', 'wide')
+        'The River is <strong class="highlight">Wide</strong>'
+
+    '''
+    if not phrase or not text:
+        return text
+    highlight_re = re.compile('(%s)' % re.escape(phrase), re.I)
+    if hasattr(text, '__html__'):
+        return literal(highlight_re.sub(highlighter, text))
+    else:
+        return highlight_re.sub(highlighter, text)
+
 
 #----------------------------------------------------------------------
 # USERS
@@ -159,6 +177,14 @@ class Member(m.Model):
         default = 'STUDT',
         max_length = 5)
 
+    def instr_name_hl(self, terms):
+        for term in terms:
+            hl_instr = highlight(self.user.last_name,term)
+            if not hl_instr == self.user.last_name:
+                return hl_instr
+
+        return self.user.last_name
+
     def instr_name(self):
         return self.user.last_name
 
index 16c8ba8..83ec58e 100644 (file)
@@ -4,9 +4,9 @@ from django.shortcuts import get_object_or_404
 from django.contrib.auth.decorators import login_required
 from django.contrib.auth import authenticate, login, logout
 import conifer.genshi_support as g
+import re
 from conifer.syrup import models
 from django.contrib.auth.models import User
-import re
 from django.db.models import Q
 
 
@@ -142,22 +142,6 @@ def get_query(query_string, search_fields):
 
 #------------------------------------------------------------
 
-def highlight(text, phrase, 
-              highlighter='<strong class="highlight">\\1</strong>'):
-    ''' This may be a lame way to do this, but will want to highlight matches somehow
-
-        >>> highlight('The River is Wide', 'wide')
-        'The River is <strong class="highlight">Wide</strong>'
-    
-    '''
-    if not phrase or not text:
-        return text
-    highlight_re = re.compile('(%s)' % re.escape(phrase), re.I)
-    if hasattr(text, '__html__'):
-        return literal(highlight_re.sub(highlighter, text))
-    else:
-        return highlight_re.sub(highlighter, text)
-
 def search(request):
     ''' Need to work on this
     
@@ -178,9 +162,11 @@ def search(request):
         for term in norm_query:
             print term
         print len(models.Member.objects.filter(instr_query).filter(role='INSTR'))
-        print highlight('The River Is Wide', 'is wide')
+        instr_len = len(models.Member.objects.filter(instr_query).filter(role='INSTR'))
+        #print highlight('The River Is Wide', 'is wide')
 
     return g.render('search_results.xhtml', paginator=paginator,
                     page_num=page_num,
-                    count=count, query_string=query_string, instructor_list=instructor_list)
+                    count=count, query_string=query_string, instructor_list=instructor_list,
+                    norm_query=norm_query, instr_len=instr_len)