diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-12-29 18:33:27 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-12-29 18:33:27 +0000 |
| commit | dc94cb7b10927b412b813dc9493532c149816658 (patch) | |
| tree | 1cf82ff7c4ab8ba19dc63630f8ea663e8611122b /lib/sqlalchemy | |
| parent | b528d58d497c100c92c1600349d587f2146dd6c2 (diff) | |
| download | sqlalchemy-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.py | 15 |
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 |
