Author: phd
Date: 2006-10-04 09:19:59 -0600 (Wed, 04 Oct 2006)
New Revision: 1977
Modified:
SQLObject/trunk/sqlobject/sresults.py
SQLObject/trunk/sqlobject/tests/test_select.py
SQLObject/trunk/sqlobject/util/csvexport.py
Log:
SelectResults cannot be queried for truth value; __nonzero__() raises NotImplementedError.
Modified: SQLObject/trunk/sqlobject/sresults.py
===================================================================
--- SQLObject/trunk/sqlobject/sresults.py 2006-10-03 19:01:53 UTC (rev 1976)
+++ SQLObject/trunk/sqlobject/sresults.py 2006-10-04 15:19:59 UTC (rev 1977)
@@ -35,6 +35,10 @@
def __repr__(self):
return "<%s at %x>" % (self.__class__.__name__, id(self))
+ def __nonzero__(self):
+ raise NotImplementedError(
+ "To test if a SelectResult will produce any items, use list(result) or result.count()")
+
def _getConnection(self):
return self.ops.get('connection') or self.sourceClass._connection
Modified: SQLObject/trunk/sqlobject/tests/test_select.py
===================================================================
--- SQLObject/trunk/sqlobject/tests/test_select.py 2006-10-03 19:01:53 UTC (rev 1976)
+++ SQLObject/trunk/sqlobject/tests/test_select.py 2006-10-04 15:19:59 UTC (rev 1977)
@@ -168,3 +168,8 @@
assert IterTest.select(RLIKE(IterTest.q.name, "^sqlb.*$")).count() == 1
assert IterTest.select(RLIKE(IterTest.q.name, "^sqlb.*$")).count() == 1
assert IterTest.select(RLIKE(IterTest.q.name, "^sqlx.*$")).count() == 0
+
+def test_bool_SelectResults():
+ setupClass(IterTest)
+
+ raises(NotImplementedError, bool, IterTest.select())
Modified: SQLObject/trunk/sqlobject/util/csvexport.py
===================================================================
--- SQLObject/trunk/sqlobject/util/csvexport.py 2006-10-03 19:01:53 UTC (rev 1976)
+++ SQLObject/trunk/sqlobject/util/csvexport.py 2006-10-04 15:19:59 UTC (rev 1977)
@@ -58,14 +58,14 @@
writer = csv.writer(return_fileobj)
elif not hasattr(writer, 'writerow'):
writer = csv.writer(writer)
-
+
if isinstance(soClass, sqlobject.SQLObject.SelectResultsClass):
- assert not select, (
+ assert select is None, (
"You cannot pass in a select argument (%r) and a SelectResult argument (%r) for soClass"
% (select, soClass))
select = soClass
soClass = select.sourceClass
- elif not select:
+ elif select is None:
select = soClass.select()
if getattr(soClass, 'csvOrderBy', None):
select = select.orderBy(soClass.csvOrderBy)
|