Thread: [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 + |