diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-05-03 23:32:11 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-05-03 23:32:11 +0000 |
| commit | 591b1d975b4d9469b56a9621c0863b2edd2a5b32 (patch) | |
| tree | c054323321e0690c7512db3627b72281fb4bc453 /lib/sqlalchemy | |
| parent | 752ef2802c57d32fe832b76b9503f42f0300da05 (diff) | |
| download | sqlalchemy-591b1d975b4d9469b56a9621c0863b2edd2a5b32.tar.gz | |
- "delete-orphan" no longer implies "delete". ongoing effort to
separate the behavior of these two operations.
Diffstat (limited to 'lib/sqlalchemy')
| -rw-r--r-- | lib/sqlalchemy/orm/dependency.py | 4 | ||||
| -rw-r--r-- | lib/sqlalchemy/orm/util.py | 2 |
2 files changed, 5 insertions, 1 deletions
diff --git a/lib/sqlalchemy/orm/dependency.py b/lib/sqlalchemy/orm/dependency.py index 86c0316f2..063d5aaa9 100644 --- a/lib/sqlalchemy/orm/dependency.py +++ b/lib/sqlalchemy/orm/dependency.py @@ -180,6 +180,8 @@ class OneToManyDP(DependencyProcessor): if delete: # head object is being deleted, and we manage its list of child objects # the child objects have to have their foreign key to the parent set to NULL + + # TODO: this cascade should be "delete" cascade if not self.cascade.delete_orphan or self.post_update: for obj in deplist: childlist = self.get_object_dependencies(obj, uowcommit, passive=self.passive_deletes) @@ -211,6 +213,8 @@ class OneToManyDP(DependencyProcessor): # the child objects have to have their foreign key to the parent set to NULL if self.post_update: pass + # TODO: this block based on "delete_orphan" should technically be "delete", but also + # is entirely not necessary elif self.cascade.delete_orphan: for obj in deplist: childlist = self.get_object_dependencies(obj, uowcommit, passive=self.passive_deletes) diff --git a/lib/sqlalchemy/orm/util.py b/lib/sqlalchemy/orm/util.py index 6cb4fed6e..923dd6797 100644 --- a/lib/sqlalchemy/orm/util.py +++ b/lib/sqlalchemy/orm/util.py @@ -15,7 +15,7 @@ class CascadeOptions(object): def __init__(self, arg=""): values = util.Set([c.strip() for c in arg.split(',')]) self.delete_orphan = "delete-orphan" in values - self.delete = "delete" in values or self.delete_orphan or "all" in values + self.delete = "delete" in values or "all" in values self.save_update = "save-update" in values or "all" in values self.merge = "merge" in values or "all" in values self.expunge = "expunge" in values or "all" in values |
