[SQL-CVS] r2660 - in SQLObject/trunk/sqlobject: . tests
SQLObject is a Python ORM.
Brought to you by:
ianbicking,
phd
|
From: <sub...@co...> - 2007-05-08 15:07:16
|
Author: luke
Date: 2007-05-08 09:07:11 -0600 (Tue, 08 May 2007)
New Revision: 2660
Modified:
SQLObject/trunk/sqlobject/joins.py
SQLObject/trunk/sqlobject/tests/test_SQLMultipleJoin.py
SQLObject/trunk/sqlobject/tests/test_SQLRelatedJoin.py
Log:
Bug in SQLRelatedJoin not respecting _perConnection
Modified: SQLObject/trunk/sqlobject/joins.py
===================================================================
--- SQLObject/trunk/sqlobject/joins.py 2007-05-06 23:56:34 UTC (rev 2659)
+++ SQLObject/trunk/sqlobject/joins.py 2007-05-08 15:07:11 UTC (rev 2660)
@@ -270,6 +270,10 @@
class SOSQLRelatedJoin(SORelatedJoin):
def performJoin(self, inst):
+ if inst.sqlmeta._perConnection:
+ conn = inst._connection
+ else:
+ conn = None
results = self.otherClass.select(sqlbuilder.AND(
OtherTableToJoin(
self.otherClass.sqlmeta.table, self.otherClass.sqlmeta.idName,
@@ -280,7 +284,8 @@
self.intermediateTable, self.joinColumn
),
TableToId(self.soClass.sqlmeta.table, self.soClass.sqlmeta.idName, inst.id),
- ), clauseTables=(self.soClass.sqlmeta.table, self.otherClass.sqlmeta.table, self.intermediateTable))
+ ), clauseTables=(self.soClass.sqlmeta.table, self.otherClass.sqlmeta.table, self.intermediateTable),
+ connection=conn)
return results.orderBy(self.orderBy)
class SQLRelatedJoin(RelatedJoin):
Modified: SQLObject/trunk/sqlobject/tests/test_SQLMultipleJoin.py
===================================================================
--- SQLObject/trunk/sqlobject/tests/test_SQLMultipleJoin.py 2007-05-06 23:56:34 UTC (rev 2659)
+++ SQLObject/trunk/sqlobject/tests/test_SQLMultipleJoin.py 2007-05-08 15:07:11 UTC (rev 2660)
@@ -41,3 +41,16 @@
assert trunks in hibrid.fightersAsSResult
assert picollo not in hibrid.fightersAsSResult
assert str(hibrid.fightersAsSResult.sum('power')) == '23'
+
+def test_multiple_join_transaction():
+ if not supports('transactions'):
+ return
+ createAllTables()
+ trans = Race._connection.transaction()
+ try:
+ namek=Race(name='namekuseijin', connection=trans)
+ gokou=RFighter(name='Gokou (Kakaruto)', race=namek, power=10, connection=trans)
+ assert namek.fightersAsSResult.count() == 1
+ assert namek.fightersAsSResult[0]._connection == trans
+ finally:
+ Race._connection.autoCommit = True
\ No newline at end of file
Modified: SQLObject/trunk/sqlobject/tests/test_SQLRelatedJoin.py
===================================================================
--- SQLObject/trunk/sqlobject/tests/test_SQLRelatedJoin.py 2007-05-06 23:56:34 UTC (rev 2659)
+++ SQLObject/trunk/sqlobject/tests/test_SQLRelatedJoin.py 2007-05-08 15:07:11 UTC (rev 2660)
@@ -42,3 +42,17 @@
for i, j in zip(t1.fightersAsList, t1.fightersAsSResult):
assert i is j
assert len(t2.fightersAsList) == t2.fightersAsSResult.count()
+
+def test_related_join_transaction():
+ if not supports('transactions'):
+ return
+ createAllTables()
+ trans = Tourtment._connection.transaction()
+ try:
+ t1=Tourtment(name='Tourtment #1', connection=trans)
+ t1.addFighter(Fighter(name='Jim'))
+ assert t1.fightersAsSResult.count() == 1
+ assert t1.fightersAsSResult[0]._connection == trans
+ finally:
+ Tourtment._connection.autoCommit = True
+
|