summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkopertop <kopertop@604d75c7-a419-0410-a38f-bde1a0bd1dbf>2010-03-08 22:00:24 +0000
committerkopertop <kopertop@604d75c7-a419-0410-a38f-bde1a0bd1dbf>2010-03-08 22:00:24 +0000
commitc531c20647e2e55403a02dcfd4c7c43f95a88b60 (patch)
treef364217fb1aaba101f3d51aa30797f8592c3f1ba
parent1e460d9b2a354b1929d942b813e32bf05eb4ee97 (diff)
downloadboto-c531c20647e2e55403a02dcfd4c7c43f95a88b60.tar.gz
Added back in support for "like" that has a leading "%" for lists
-rw-r--r--boto/sdb/db/manager/sdbmanager.py3
-rw-r--r--tests/db/test_query.py9
2 files changed, 10 insertions, 2 deletions
diff --git a/boto/sdb/db/manager/sdbmanager.py b/boto/sdb/db/manager/sdbmanager.py
index 49dac2a0..74a6a699 100644
--- a/boto/sdb/db/manager/sdbmanager.py
+++ b/boto/sdb/db/manager/sdbmanager.py
@@ -418,7 +418,8 @@ class SDBManager(object):
op = "like"
elif op in ("!=", "not"):
op = "not like"
- val = "%%:%s" % val
+ if not(op == "like" and val.startswith("%")):
+ val = "%%:%s" % val
return "`%s` %s '%s'" % (name, op, val.replace("'", "''"))
def _build_filter_part(self, cls, filters, order_by=None):
diff --git a/tests/db/test_query.py b/tests/db/test_query.py
index 85e1069c..047bf873 100644
--- a/tests/db/test_query.py
+++ b/tests/db/test_query.py
@@ -43,7 +43,7 @@ class TestQuerying(object):
o = SimpleModel()
o.name = "Simple Object"
- o.strs = ["B", "A", "C"]
+ o.strs = ["B", "A", "C", "Foo"]
o.num = 1
o.put()
cls.objs.append(o)
@@ -143,3 +143,10 @@ class TestQuerying(object):
assert(SimpleModel.find(strs="A").next().id == self.objs[0].id)
assert(SimpleModel.find(strs="B").next().id == self.objs[0].id)
assert(SimpleModel.find(strs="C").next().id == self.objs[0].id)
+
+ def test_like(self):
+ """Test with a "like" expression"""
+ query = SimpleModel.all()
+ query.filter("strs like", "%oo%")
+ print query.get_query()
+ assert(query.count() == 1)