summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/orm/state.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2011-04-07 17:56:01 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2011-04-07 17:56:01 -0400
commita645032262afc41cd39a85c9f56388341346a995 (patch)
tree4ac392277e3075e27d75c28017ad1e7902a32d3a /lib/sqlalchemy/orm/state.py
parentfbf0c60800e0f01fc872c0770dc0fa1ed1b20cd0 (diff)
downloadsqlalchemy-a645032262afc41cd39a85c9f56388341346a995.tar.gz
- Some fixes to the state handling regarding
backrefs, typically when autoflush=False, where the back-referenced collection wouldn't properly handle add/removes with no net change. Thanks to Richard Murri for the test case + patch. [ticket:2123] (also in 0.6.7).
Diffstat (limited to 'lib/sqlalchemy/orm/state.py')
-rw-r--r--lib/sqlalchemy/orm/state.py6
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/sqlalchemy/orm/state.py b/lib/sqlalchemy/orm/state.py
index e29c5c03a..00582fbdb 100644
--- a/lib/sqlalchemy/orm/state.py
+++ b/lib/sqlalchemy/orm/state.py
@@ -547,10 +547,12 @@ class PendingCollection(object):
def append(self, value):
if value in self.deleted_items:
self.deleted_items.remove(value)
- self.added_items.add(value)
+ else:
+ self.added_items.add(value)
def remove(self, value):
if value in self.added_items:
self.added_items.remove(value)
- self.deleted_items.add(value)
+ else:
+ self.deleted_items.add(value)