diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-02-17 03:14:36 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-02-17 03:14:36 +0000 |
| commit | f4b1484ff570125ba511ed931e8e5e53d53f4866 (patch) | |
| tree | c82d0774d23f70eef6be63a46b282a7deabaaa22 /lib | |
| parent | 3e5eeb064a471269041cb12ad95f413ff9aee9c6 (diff) | |
| download | sqlalchemy-f4b1484ff570125ba511ed931e8e5e53d53f4866.tar.gz | |
- extension() query option propigates to Mapper._instance() method so that
all loading-related methods get called [ticket:454]
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/sqlalchemy/orm/mapper.py | 10 | ||||
| -rw-r--r-- | lib/sqlalchemy/orm/query.py | 5 |
2 files changed, 8 insertions, 7 deletions
diff --git a/lib/sqlalchemy/orm/mapper.py b/lib/sqlalchemy/orm/mapper.py index 1d4ce6bb9..18c4c3acb 100644 --- a/lib/sqlalchemy/orm/mapper.py +++ b/lib/sqlalchemy/orm/mapper.py @@ -1200,9 +1200,9 @@ class Mapper(object): if not context.identity_map.has_key(identitykey): context.identity_map[identitykey] = instance isnew = True - if self.extension.populate_instance(self, context, row, instance, identitykey, isnew) is EXT_PASS: + if context.extension.populate_instance(self, context, row, instance, identitykey, isnew) is EXT_PASS: self.populate_instance(context, instance, row, identitykey, isnew) - if self.extension.append_result(self, context, row, instance, identitykey, result, isnew) is EXT_PASS: + if context.extension.append_result(self, context, row, instance, identitykey, result, isnew) is EXT_PASS: if result is not None: result.append(instance) return instance @@ -1228,7 +1228,7 @@ class Mapper(object): return None # plugin point - instance = self.extension.create_instance(self, context, row, self.class_) + instance = context.extension.create_instance(self, context, row, self.class_) if instance is EXT_PASS: instance = self._create_instance(context.session) else: @@ -1243,9 +1243,9 @@ class Mapper(object): # call further mapper properties on the row, to pull further # instances from the row and possibly populate this item. - if self.extension.populate_instance(self, context, row, instance, identitykey, isnew) is EXT_PASS: + if context.extension.populate_instance(self, context, row, instance, identitykey, isnew) is EXT_PASS: self.populate_instance(context, instance, row, identitykey, isnew) - if self.extension.append_result(self, context, row, instance, identitykey, result, isnew) is EXT_PASS: + if context.extension.append_result(self, context, row, instance, identitykey, result, isnew) is EXT_PASS: if result is not None: result.append(instance) return instance diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py index 4c0a4b1ec..e7b124372 100644 --- a/lib/sqlalchemy/orm/query.py +++ b/lib/sqlalchemy/orm/query.py @@ -323,7 +323,7 @@ class Query(object): session = self.session - context = SelectionContext(self.select_mapper, session, with_options=self.with_options, **kwargs) + context = SelectionContext(self.select_mapper, session, self.extension, with_options=self.with_options, **kwargs) result = util.UniqueAppender([]) if mappers: @@ -525,10 +525,11 @@ class SelectionContext(OperationContext): to the freshly loaded value """ - def __init__(self, mapper, session, **kwargs): + def __init__(self, mapper, session, extension, **kwargs): self.populate_existing = kwargs.pop('populate_existing', False) self.version_check = kwargs.pop('version_check', False) self.session = session + self.extension = extension self.identity_map = {} super(SelectionContext, self).__init__(mapper, kwargs.pop('with_options', []), **kwargs) def accept_option(self, opt): |
