summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2007-12-29 18:33:27 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2007-12-29 18:33:27 +0000
commitdc94cb7b10927b412b813dc9493532c149816658 (patch)
tree1cf82ff7c4ab8ba19dc63630f8ea663e8611122b /lib/sqlalchemy
parentb528d58d497c100c92c1600349d587f2146dd6c2 (diff)
downloadsqlalchemy-dc94cb7b10927b412b813dc9493532c149816658.tar.gz
- MapperExtension.before_update() and after_update() are now called
symmetrically; previously, an instance that had no modified column attributes (but had a relation() modification) could be called with before_update() but not after_update() [ticket:907]
Diffstat (limited to 'lib/sqlalchemy')
-rw-r--r--lib/sqlalchemy/orm/mapper.py15
1 files changed, 7 insertions, 8 deletions
diff --git a/lib/sqlalchemy/orm/mapper.py b/lib/sqlalchemy/orm/mapper.py
index dca3c97b1..bec5d5c6e 100644
--- a/lib/sqlalchemy/orm/mapper.py
+++ b/lib/sqlalchemy/orm/mapper.py
@@ -1125,15 +1125,14 @@ class Mapper(object):
if not postupdate:
# call after_XXX extensions
- for state, connection in inserted_objects:
- mapper = _state_mapper(state)
- if 'after_insert' in mapper.extension.methods:
- mapper.extension.after_insert(mapper, connection, state.obj())
-
- for state, connection in updated_objects:
+ for state, connection, has_identity in tups:
mapper = _state_mapper(state)
- if 'after_update' in mapper.extension.methods:
- mapper.extension.after_update(mapper, connection, state.obj())
+ if not has_identity:
+ if 'after_insert' in mapper.extension.methods:
+ mapper.extension.after_insert(mapper, connection, state.obj())
+ else:
+ if 'after_update' in mapper.extension.methods:
+ mapper.extension.after_update(mapper, connection, state.obj())
def _postfetch(self, connection, table, state, resultproxy, params, value_params):
"""After an ``INSERT`` or ``UPDATE``, assemble newly generated