diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-04-03 18:05:33 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-04-03 18:05:33 -0400 |
commit | e5c64845f0cb276a3ae8de51970d56da8e2847c0 (patch) | |
tree | bf80768df41972007b9b4208a0d9c442f4bd7dfc /lib/sqlalchemy/orm/unitofwork.py | |
parent | 67caec4e17987e0f62aa9bacacdec030e03d9f88 (diff) | |
download | sqlalchemy-e5c64845f0cb276a3ae8de51970d56da8e2847c0.tar.gz |
o2m/m2o pretty much there, minus post update.
Diffstat (limited to 'lib/sqlalchemy/orm/unitofwork.py')
-rw-r--r-- | lib/sqlalchemy/orm/unitofwork.py | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/lib/sqlalchemy/orm/unitofwork.py b/lib/sqlalchemy/orm/unitofwork.py index 76cdde635..ceed4c288 100644 --- a/lib/sqlalchemy/orm/unitofwork.py +++ b/lib/sqlalchemy/orm/unitofwork.py @@ -198,6 +198,8 @@ class UOWTransaction(object): self.dependencies.remove(edge) for dep in convert[edge[1]]: self.dependencies.add((edge[0], dep)) + elif edge[0].disabled or edge[1].disabled: + self.dependencies.remove(edge) # remove actions that were part of the cycles, # or have been marked as "disabled" by the "breaking up" @@ -208,6 +210,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 for rec in sort: @@ -361,6 +366,14 @@ class ProcessState(PostSortRec): self.dependency_processor.process_deletes(uow, [self.state]) else: self.dependency_processor.process_saves(uow, [self.state]) + + def __repr__(self): + return "%s(%s, %s, delete=%s)" % ( + self.__class__.__name__, + self.dependency_processor, + mapperutil.state_str(self.state), + self.delete + ) class SaveUpdateState(PostSortRec): def __init__(self, uow, state): |