From: Michael Trier Date: Wed, 26 Nov 2008 19:44:04 +0000 (+0000) Subject: Refactored the entity setup code in Query so that it is not duplicated in several... X-Git-Tag: rel_0_5_0~154 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fc779a83554374d88d4cbda4361c118ff878d9e9;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git Refactored the entity setup code in Query so that it is not duplicated in several places. --- diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py index d888763128..4bff81d679 100644 --- a/lib/sqlalchemy/orm/query.py +++ b/lib/sqlalchemy/orm/query.py @@ -83,14 +83,18 @@ class Query(object): self._only_load_props = None self._refresh_state = None self._from_obj = None - self._entities = [] self._polymorphic_adapters = {} self._filter_aliases = None self._from_obj_alias = None self.__currenttables = set() + self._set_entities(entities) + def _set_entities(self, entities, entity_wrapper=None): + if entity_wrapper is None: + entity_wrapper = _QueryEntity + self._entities = [] for ent in util.to_list(entities): - _QueryEntity(self, ent) + entity_wrapper(self, ent) self.__setup_aliasizers(self._entities) @@ -528,10 +532,7 @@ class Query(object): self._limit = self._offset = None self.__set_select_from(fromclause) if entities: - self._entities = [] - for ent in entities: - _QueryEntity(self, ent) - self.__setup_aliasizers(self._entities) + self._set_entities(entities) _from_self = from_self @@ -541,10 +542,7 @@ class Query(object): if not columns: return iter(()) q = self._clone() - q._entities = [] - for column in columns: - _ColumnEntity(q, column) - q.__setup_aliasizers(q._entities) + q._set_entities(columns, entity_wrapper=_ColumnEntity) if not q._yield_per: q._yield_per = 10 return iter(q)