diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-04-03 17:03:12 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-04-03 17:03:12 -0400 |
commit | 67caec4e17987e0f62aa9bacacdec030e03d9f88 (patch) | |
tree | 3442bbf71363437b226c5983c6d8d74911caeb63 /lib/sqlalchemy/orm/unitofwork.py | |
parent | 367bc4a9e53889afde6966ba210ccfe11dbe57c3 (diff) | |
download | sqlalchemy-67caec4e17987e0f62aa9bacacdec030e03d9f88.tar.gz |
- basic inheritance behavior
- we do need dependencies between an object and its dep when the other object
has no save or delete pending. the other object
like before isn't needed, but right now we make the dependency just 'None',
and it gets thrown away.
Diffstat (limited to 'lib/sqlalchemy/orm/unitofwork.py')
-rw-r--r-- | lib/sqlalchemy/orm/unitofwork.py | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/sqlalchemy/orm/unitofwork.py b/lib/sqlalchemy/orm/unitofwork.py index 3118e0b9f..76cdde635 100644 --- a/lib/sqlalchemy/orm/unitofwork.py +++ b/lib/sqlalchemy/orm/unitofwork.py @@ -170,7 +170,9 @@ class UOWTransaction(object): break # see if the graph of mapper dependencies has cycles. - self.cycles = cycles = topological.find_cycles(self.dependencies, self.postsort_actions.values()) + self.cycles = cycles = topological.find_cycles( + self.dependencies, + self.postsort_actions.values()) if cycles: # if yes, break the per-mapper actions into @@ -184,7 +186,9 @@ class UOWTransaction(object): # the per-state actions for those per-mapper actions # that were broken up. for edge in list(self.dependencies): - if cycles.issuperset(edge): + if None in edge: + self.dependencies.remove(edge) + elif cycles.issuperset(edge): self.dependencies.remove(edge) elif edge[0] in cycles: self.dependencies.remove(edge) @@ -317,7 +321,8 @@ class ProcessAll(PropertyRecMixin, PostSortRec): class SaveUpdateAll(PostSortRec): def __init__(self, uow, mapper): self.mapper = mapper - + assert mapper is mapper.base_mapper + def execute(self, uow): self.mapper._save_obj( uow.states_for_mapper_hierarchy(self.mapper, False, False), @@ -332,6 +337,7 @@ class SaveUpdateAll(PostSortRec): class DeleteAll(PostSortRec): def __init__(self, uow, mapper): self.mapper = mapper + assert mapper is mapper.base_mapper def execute(self, uow): self.mapper._delete_obj( |