Merge pull request #501 from niphlod/fix/dal_contains

fixed bug on contains(), smart_query uses ilike instead of like
This commit is contained in:
mdipierro committed 2014-09-14 16:00:00 -05:00
commit b1180f483c
1 file changed
+3 -5
+3 -5
View File
@@ -7770,7 +7770,7 @@ def smart_query(fields, text):
elif op == 'notbelongs': new_query = ~field.belongs(value.split(',')) elif op == 'notbelongs': new_query = ~field.belongs(value.split(','))
elif field.type in ('text', 'string', 'json'): elif field.type in ('text', 'string', 'json'):
if op == 'contains': new_query = field.contains(value) if op == 'contains': new_query = field.contains(value)
elif op == 'like': new_query = field.like(value) elif op == 'like': new_query = field.ilike(value)
elif op == 'startswith': new_query = field.startswith(value) elif op == 'startswith': new_query = field.startswith(value)
elif op == 'endswith': new_query = field.endswith(value) elif op == 'endswith': new_query = field.endswith(value)
else: raise RuntimeError("Invalid operation") else: raise RuntimeError("Invalid operation")
@@ -9860,14 +9860,12 @@ class Expression(object):
def contains(self, value, all=False, case_sensitive=False): def contains(self, value, all=False, case_sensitive=False):
""" """
The case_sensitive parameters is only useful for PostgreSQL
For other RDMBs it is ignored and contains is always case insensitive
For MongoDB and GAE contains is always case sensitive For MongoDB and GAE contains is always case sensitive
""" """
db = self.db db = self.db
if isinstance(value, (list, tuple)): if isinstance(value, (list, tuple)):
subqueries = [self.contains(str(v).strip(), case_sensitive=case_sensitive) subqueries = [self.contains(v, case_sensitive=case_sensitive)
for v in value if str(v).strip()] for v in value if v]
if not subqueries: if not subqueries:
return self.contains('') return self.contains('')
else: else: