diff roundup/backends/back_metakit.py @ 3147:dbf80d7db63f

consistent text searching behaviour (AND everywhere) [SF#1101036]
author Richard Jones <richard@users.sourceforge.net>
date Sun, 13 Feb 2005 22:38:57 +0000
parents a588dab13664
children 6feac4fcf883
line wrap: on
line diff
--- a/roundup/backends/back_metakit.py	Sun Feb 13 22:04:32 2005 +0000
+++ b/roundup/backends/back_metakit.py	Sun Feb 13 22:38:57 2005 +0000
@@ -1,4 +1,4 @@
-# $Id: back_metakit.py,v 1.89 2005-01-09 19:01:09 jlgijsbers Exp $
+# $Id: back_metakit.py,v 1.90 2005-02-13 22:37:00 richard Exp $
 '''Metakit backend for Roundup, originally by Gordon McMillan.
 
 Known Current Bugs:
@@ -1212,7 +1212,7 @@
         where = {'_isdel':0}
         wherehigh = {}
         mlcriteria = {}
-        regexes = {}
+        regexes = []
         orcriteria = {}
         for propname, value in filterspec.items():
             prop = self.ruprops.get(propname, None)
@@ -1258,14 +1258,12 @@
             elif isinstance(prop, hyperdb.String):
                 if type(value) is not type([]):
                     value = [value]
-                m = []
                 for v in value:
                     # simple glob searching
                     v = re.sub(r'([\|\{\}\\\.\+\[\]\(\)])', r'\\\1', v)
                     v = v.replace('?', '.')
                     v = v.replace('*', '.*?')
-                    m.append(v)
-                regexes[propname] = re.compile('(%s)'%('|'.join(m)), re.I)
+                    regexes.append((propname, re.compile(v, re.I)))
             elif propname == 'id':
                 where[propname] = int(value)
             elif isinstance(prop, hyperdb.Boolean):
@@ -1353,7 +1351,7 @@
 
         if regexes:
             def ff(row, r=regexes):
-                for propname, regex in r.items():
+                for propname, regex in r:
                     val = str(getattr(row, propname))
                     if not regex.search(val):
                         return 0

Roundup Issue Tracker: http://roundup-tracker.org/