self._deleted = self._parent._deleted
return
- if self.nested:
+ if self.autoflush:
self.session.flush()
- if self.autoflush and not self.session.autocommit:
- # TODO: the "dirty_states" assertion is expensive,
- # so consider these assertions as temporary
- # during development
- assert not self.session._new
- assert not self.session._deleted
- assert not self.session._dirty_states
-
self._new = weakref.WeakKeyDictionary()
self._deleted = weakref.WeakKeyDictionary()
sess = create_session(autocommit=True)
self.assertRaises(sa_exc.InvalidRequestError, sess.begin_nested)
+ def test_begin_preflush(self):
+ sess = create_session(autocommit=True)
+
+ u1 = User(name='ed')
+ sess.add(u1)
+
+ sess.begin()
+ u2 = User(name='some other user')
+ sess.add(u2)
+ sess.rollback()
+ assert u2 not in sess
+ assert u1 in sess
+ assert sess.query(User).filter_by(name='ed').one() is u1
+
+
if __name__ == '__main__':