on a new mapper would establish a backref on the
first mapper.
+ - Fixed bug whereby if __eq__() was
+ redefined, a relationship many-to-one lazyload
+ would hit the __eq__() and fail. [ticket:2260]
+ Does not apply to 0.6.9.
+
-sql
- Fixed bug regarding calculation of "from" list
for a select() element. The "from" calc is now
else:
value = ATTR_EMPTY
- if value in (PASSIVE_NO_RESULT, NEVER_SET):
+ if value is PASSIVE_NO_RESULT or value is NEVER_SET:
return value
elif value is ATTR_WAS_SET:
try:
db.users.relate('loans', db.loans, order_by=db.loans.loan_date,
cascade='all, delete-orphan')
+ def test_relate_m2o(self):
+ db = sqlsoup.SqlSoup(engine)
+ db.loans.relate('user', db.users)
+ u1 = db.users.filter(db.users.c.name=='Joe Student').one()
+ eq_(db.loans.first().user, u1)
+
def test_explicit_session(self):
Session = scoped_session(sessionmaker())
db = sqlsoup.SqlSoup(engine, session=Session)
s.add(A())
s.commit()
+ def test_we_dont_call_eq(self):
+ class NoEqAllowed(object):
+ def __eq__(self, other):
+ raise Exception("nope")
+
+ addresses, users = self.tables.addresses, self.tables.users
+ Address = self.classes.Address
+
+ mapper(NoEqAllowed, users, properties={
+ 'addresses':relationship(Address, backref='user')
+ })
+ mapper(Address, addresses)
+
+ u1 = NoEqAllowed()
+ u1.name = "some name"
+ u1.addresses = [Address(id=12, email_address='a1')]
+ s = Session(testing.db)
+ s.add(u1)
+ s.commit()
+
+ a1 = s.query(Address).filter_by(id=12).one()
+ assert a1.user is u1
def test_mapping_to_join_raises(self):
"""Test implicit merging of two cols raises."""