summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/orm/unitofwork.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2010-04-03 19:41:56 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2010-04-03 19:41:56 -0400
commit3d3095497b872696e8860763f54217f425c7d35b (patch)
tree72aa4f6b477affde2139bb6616845bc6f04d6364 /lib/sqlalchemy/orm/unitofwork.py
parent85156a0fbe43f8691e19c077c92b0d433f9e654b (diff)
downloadsqlalchemy-3d3095497b872696e8860763f54217f425c7d35b.tar.gz
row switch works for post-cycle sorts too...just needed more data in the deps. the pattern here
is more data needed for each tweak.
Diffstat (limited to 'lib/sqlalchemy/orm/unitofwork.py')
-rw-r--r--lib/sqlalchemy/orm/unitofwork.py27
1 files changed, 9 insertions, 18 deletions
diff --git a/lib/sqlalchemy/orm/unitofwork.py b/lib/sqlalchemy/orm/unitofwork.py
index a4eb00f70..c8eca67eb 100644
--- a/lib/sqlalchemy/orm/unitofwork.py
+++ b/lib/sqlalchemy/orm/unitofwork.py
@@ -105,15 +105,7 @@ class UOWTransaction(object):
def remove_state_actions(self, state):
"""remove pending actions for a state from the uowtransaction."""
- if state in self.states:
- isdelete, listonly = self.states[state]
- self.states[state] = (False, True)
- if isdelete:
- self.postsort_actions.pop((DeleteState, state), None)
- else:
- self.postsort_actions.pop((SaveUpdateState, state), None)
-
-
+ self.states[state] = (False, True)
def get_attribute_history(self, state, key, passive=True):
hashkey = ("history", state, key)
@@ -223,11 +215,9 @@ class UOWTransaction(object):
# execute actions
sort = topological.sort(self.dependencies, self.postsort_actions.values())
- print "------------------------"
-# import pdb
-# pdb.set_trace()
- print self.dependencies
- print sort
+# print "------------------------"
+# print self.dependencies
+# print sort
for rec in sort:
rec.execute(self)
@@ -411,10 +401,11 @@ class DeleteState(PostSortRec):
def execute(self, uow):
mapper = self.state.manager.mapper.base_mapper
- mapper._delete_obj(
- [self.state],
- uow
- )
+ if uow.states[self.state][0]:
+ mapper._delete_obj(
+ [self.state],
+ uow
+ )
def __repr__(self):
return "%s(%s)" % (