diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-04-01 18:40:11 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-04-01 18:40:11 -0400 |
| commit | 62cf9c8f8f7252473da26b8bafa5ffa6e3b22f92 (patch) | |
| tree | 26e6b4598d9fec30c3eadcdd31b02e31ff987bfa /lib | |
| parent | bffdb4db3596aeb28bc2072672a0c6b388c0a877 (diff) | |
| download | sqlalchemy-62cf9c8f8f7252473da26b8bafa5ffa6e3b22f92.tar.gz | |
many-to-one completed for self-referential
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/sqlalchemy/orm/dependency.py | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/lib/sqlalchemy/orm/dependency.py b/lib/sqlalchemy/orm/dependency.py index b458cebf2..973036639 100644 --- a/lib/sqlalchemy/orm/dependency.py +++ b/lib/sqlalchemy/orm/dependency.py @@ -140,19 +140,6 @@ class DependencyProcessor(object): def process_saves(self, uowcommit, states): pass - def whose_dependent_on_who(self, state1, state2): - """Given an object pair assuming `obj2` is a child of `obj1`, - return a tuple with the dependent object second, or None if - there is no dependency. - - """ - if state1 is state2: - return None - elif self.direction == ONETOMANY: - return (state1, state2) - else: - return (state2, state1) - def _verify_canload(self, state): if state is not None and \ not self.mapper._canload(state, allow_subtypes=not self.enable_typechecks): @@ -271,7 +258,6 @@ class OneToManyDP(DependencyProcessor): uow.dependencies.update([ (child_action, before_delete), (before_delete, delete_parent), - (child_action, delete_parent) ]) def presort_deletes(self, uowcommit, states): @@ -398,6 +384,21 @@ class ManyToOneDP(DependencyProcessor): (parent_deletes, child_deletes) ]) + def per_state_dependencies(self, uow, + save_parent, + delete_parent, + child_action, + after_save, before_delete, isdelete): + if not isdelete: + uow.dependencies.update([ + (child_action, after_save), + (after_save, save_parent), + ]) + else: + uow.dependencies.update([ + (delete_parent, child_action) + ]) + def presort_deletes(self, uowcommit, states): if self.cascade.delete or self.cascade.delete_orphan: for state in states: |
