]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
fixed overly eager check for ClauseElement type in filter()
authorMike Bayer <mike_mp@zzzcomputing.com>
Wed, 20 Jun 2007 21:24:34 +0000 (21:24 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Wed, 20 Jun 2007 21:24:34 +0000 (21:24 +0000)
lib/sqlalchemy/orm/query.py
test/orm/query.py

index 16dd1eebaa53b3c4ebb345c64623825ef5a91c59..37f3232486fd63c21cfe42d1fe7fac964c8e9e92 100644 (file)
@@ -244,8 +244,11 @@ class Query(object):
         the criterion is any sql.ClauseElement applicable to the WHERE clause of a select.
         """
         
-        if not isinstance(criterion, sql.ClauseElement):
-            raise exceptions.ArgumentError("filter() argument must be of type sqlalchemy.sql.ClauseElement")
+        if isinstance(criterion, basestring):
+            criterion = sql.text(criterion)
+            
+        if criterion is not None and not isinstance(criterion, sql.ClauseElement):
+            raise exceptions.ArgumentError("filter() argument must be of type sqlalchemy.sql.ClauseElement or string")
             
         q = self._clone()
         if q._criterion is not None:
index f3e7914966cdde22bd58cced3b30e06071d20fa0..7ed8d402ef0fa8307f8f6033f7b7f2df826b287e 100644 (file)
@@ -163,7 +163,7 @@ class FilterTest(QueryTest):
             create_session().query(User).filter(User.name==5)
             assert False
         except exceptions.ArgumentError, e:
-            assert str(e) == "filter() argument must be of type sqlalchemy.sql.ClauseElement"
+            assert str(e) == "filter() argument must be of type sqlalchemy.sql.ClauseElement or string"
         
 class ParentTest(QueryTest):
     def test_o2m(self):