[SQL-CVS] r988 - in SQLObject/trunk/sqlobject: . tests
SQLObject is a Python ORM.
Brought to you by:
ianbicking,
phd
|
From: <sub...@co...> - 2005-09-13 16:31:27
|
Author: phd
Date: 2005-09-13 16:31:22 +0000 (Tue, 13 Sep 2005)
New Revision: 988
Modified:
SQLObject/trunk/sqlobject/main.py
SQLObject/trunk/sqlobject/tests/test_joins.py
Log:
Fixed a problem when Table(foreign_key=value) wouldn't call the foreign_key setter.
Added a test.
Modified: SQLObject/trunk/sqlobject/main.py
===================================================================
--- SQLObject/trunk/sqlobject/main.py 2005-09-13 15:31:09 UTC (rev 987)
+++ SQLObject/trunk/sqlobject/main.py 2005-09-13 16:31:22 UTC (rev 988)
@@ -1188,15 +1188,9 @@
# passed:
for column in self.sqlmeta.columnList:
- # If a foreign key is given, we get the ID of the object
- # and put that in instead
- if kw.has_key(column.foreignName):
- kw[column.name] = getID(kw[column.foreignName])
- del kw[column.foreignName]
-
# Then we check if the column wasn't passed in, and
# if not we try to get the default.
- if not kw.has_key(column.name):
+ if not kw.has_key(column.name) and not kw.has_key(column.foreignName):
default = column.default
# If we don't get it, it's an error:
Modified: SQLObject/trunk/sqlobject/tests/test_joins.py
===================================================================
--- SQLObject/trunk/sqlobject/tests/test_joins.py 2005-09-13 15:31:09 UTC (rev 987)
+++ SQLObject/trunk/sqlobject/tests/test_joins.py 2005-09-13 16:31:22 UTC (rev 988)
@@ -61,6 +61,7 @@
assert hasattr(ExplicitJoiningSO, 'foo')
assert not hasattr(ExplicitJoiningSO, 'bars')
+
class PersonJoiner2(SQLObject):
name = StringCol('name', length=40, alternateID=True)
@@ -105,3 +106,44 @@
assert ([i.zip for i in p1.addressJoiner2s]
== ['33333', '22222', '11111'])
+
+_personJoiner3_getters = []
+_personJoiner3_setters = []
+
+class PersonJoiner3(SQLObject):
+
+ name = StringCol('name', length=40, alternateID=True)
+ addressJoiner3s = MultipleJoin('AddressJoiner3')
+
+class AddressJoiner3(SQLObject):
+
+ zip = StringCol(length=5)
+ personJoiner3 = ForeignKey('PersonJoiner3')
+
+ def _get_personJoiner3(self):
+ value = self._SO_get_personJoiner3()
+ _personJoiner3_getters.append((self, value))
+ return value
+
+ def _set_personJoiner3(self, value):
+ self._SO_set_personJoiner3(value)
+ _personJoiner3_setters.append((self, value))
+
+class TestJoin3:
+
+ def setup_method(self, meth):
+ setupClass([PersonJoiner3, AddressJoiner3])
+ p1 = PersonJoiner3(name='bob')
+ p2 = PersonJoiner3(name='sally')
+ for z in ['11111', '22222', '33333']:
+ a = AddressJoiner3(zip=z, personJoiner3=p1)
+ AddressJoiner3(zip='00000', personJoiner3=p2)
+
+ def test_accessors(self):
+ assert len(_personJoiner3_getters) == 0
+ assert len(_personJoiner3_setters) == 4
+ bob = PersonJoiner3.byName('bob')
+ for addressJoiner3 in bob.addressJoiner3s:
+ addressJoiner3.personJoiner3
+ assert len(_personJoiner3_getters) == 3
+ assert len(_personJoiner3_setters) == 4
|