diff options
Diffstat (limited to 'lib/sqlalchemy/orm/unitofwork.py')
| -rw-r--r-- | lib/sqlalchemy/orm/unitofwork.py | 27 |
1 files changed, 5 insertions, 22 deletions
diff --git a/lib/sqlalchemy/orm/unitofwork.py b/lib/sqlalchemy/orm/unitofwork.py index bb3bb4fb2..16a01bdc1 100644 --- a/lib/sqlalchemy/orm/unitofwork.py +++ b/lib/sqlalchemy/orm/unitofwork.py @@ -215,30 +215,13 @@ class UOWTransaction(object): ).difference(cycles) # execute actions - sort = topological.sort(self.dependencies, postsort_actions) - print "------------------------" - print self.dependencies - print sort - if cycles: - # organize into a tree so that groups of nodes can be - # merged together, allowing better maintenance of insert - # ordering and other things - (head, children) = topological.organize_as_tree(self.dependencies, sort) - stack = [(head, children)] - - head.execute(self) - while stack: - node, children = stack.pop() - if children: - related = set([n[0] for n in children]) - while related: - n = related.pop() - n.execute_aggregate(self, related) - - stack += children + for set_ in topological.sort_as_subsets(self.dependencies, postsort_actions): + while set_: + n = set_.pop() + n.execute_aggregate(self, set_) else: - for rec in sort: + for rec in topological.sort(self.dependencies, postsort_actions): rec.execute(self) |
